{"id":18964,"date":"2013-12-14T13:46:47","date_gmt":"2013-12-14T11:46:47","guid":{"rendered":"https:\/\/mamchenkov.net\/wordpress\/?p=18964"},"modified":"2013-12-14T13:47:15","modified_gmt":"2013-12-14T11:47:15","slug":"vim-js-javascript-port-of-vim","status":"publish","type":"post","link":"https:\/\/mamchenkov.net\/wordpress\/2013\/12\/14\/vim-js-javascript-port-of-vim\/","title":{"rendered":"Vim.js &#8211; JavaScript port of Vim"},"content":{"rendered":"<!-- google_ad_section_start -->\n<p><a href=\"http:\/\/www.codinghorror.com\/blog\/2007\/07\/the-principle-of-least-power.html\">Atwood&#8217;s Law<\/a> &#8211;\u00a0any application that <em>can<\/em> be written in JavaScript, <em>will<\/em> eventually be written in JavaScript &#8211; seems to be getting more and more traction. \u00a0Here is the newest example &#8211; <a href=\"http:\/\/coolwanglu.github.io\/vim.js\/web\/vim.html\">Vim.js<\/a> &#8211; a JavaScript port of the popular editor Vim.<\/p>\n<p><a href=\"https:\/\/i0.wp.com\/mamchenkov.net\/wordpress\/wp-content\/uploads\/2013\/12\/vim.js.png?ssl=1\"><img data-recalc-dims=\"1\" loading=\"lazy\" decoding=\"async\" data-attachment-id=\"18965\" data-permalink=\"https:\/\/mamchenkov.net\/wordpress\/2013\/12\/14\/vim-js-javascript-port-of-vim\/vim-js\/\" data-orig-file=\"https:\/\/i0.wp.com\/mamchenkov.net\/wordpress\/wp-content\/uploads\/2013\/12\/vim.js.png?fit=843%2C623&amp;ssl=1\" data-orig-size=\"843,623\" data-comments-opened=\"1\" data-image-meta=\"{&quot;aperture&quot;:&quot;0&quot;,&quot;credit&quot;:&quot;&quot;,&quot;camera&quot;:&quot;&quot;,&quot;caption&quot;:&quot;&quot;,&quot;created_timestamp&quot;:&quot;0&quot;,&quot;copyright&quot;:&quot;&quot;,&quot;focal_length&quot;:&quot;0&quot;,&quot;iso&quot;:&quot;0&quot;,&quot;shutter_speed&quot;:&quot;0&quot;,&quot;title&quot;:&quot;&quot;}\" data-image-title=\"vim.js\" data-image-description=\"\" data-image-caption=\"\" data-large-file=\"https:\/\/i0.wp.com\/mamchenkov.net\/wordpress\/wp-content\/uploads\/2013\/12\/vim.js.png?fit=660%2C488&amp;ssl=1\" class=\"aligncenter size-medium wp-image-18965\" alt=\"vim.js\" src=\"https:\/\/i0.wp.com\/mamchenkov.net\/wordpress\/wp-content\/uploads\/2013\/12\/vim.js-500x369.png?resize=500%2C369&#038;ssl=1\" width=\"500\" height=\"369\" srcset=\"https:\/\/i0.wp.com\/mamchenkov.net\/wordpress\/wp-content\/uploads\/2013\/12\/vim.js.png?resize=500%2C369&amp;ssl=1 500w, https:\/\/i0.wp.com\/mamchenkov.net\/wordpress\/wp-content\/uploads\/2013\/12\/vim.js.png?resize=80%2C60&amp;ssl=1 80w, https:\/\/i0.wp.com\/mamchenkov.net\/wordpress\/wp-content\/uploads\/2013\/12\/vim.js.png?resize=510%2C376&amp;ssl=1 510w, https:\/\/i0.wp.com\/mamchenkov.net\/wordpress\/wp-content\/uploads\/2013\/12\/vim.js.png?resize=710%2C524&amp;ssl=1 710w, https:\/\/i0.wp.com\/mamchenkov.net\/wordpress\/wp-content\/uploads\/2013\/12\/vim.js.png?resize=641%2C474&amp;ssl=1 641w, https:\/\/i0.wp.com\/mamchenkov.net\/wordpress\/wp-content\/uploads\/2013\/12\/vim.js.png?w=843&amp;ssl=1 843w\" sizes=\"auto, (max-width: 500px) 100vw, 500px\" \/><\/a><\/p>\n<p>This is not a production day-to-day ready software yet, but it&#8217;s a good start. \u00a0You can <a href=\"https:\/\/github.com\/coolwanglu\/vim.js\">check out the project from GitHub<\/a> and play with the source code.<\/p>\n<!-- google_ad_section_end -->\n","protected":false},"excerpt":{"rendered":"<!-- google_ad_section_start -->\n<p>Atwood&#8217;s Law &#8211;\u00a0any application that can be written in JavaScript, will eventually be written in JavaScript &#8211; seems to be getting more and more traction. \u00a0Here is the newest example &#8211; Vim.js &#8211; a JavaScript port of the popular editor Vim. This is not a production day-to-day ready software yet, but it&#8217;s a good start. &hellip; <a href=\"https:\/\/mamchenkov.net\/wordpress\/2013\/12\/14\/vim-js-javascript-port-of-vim\/\" class=\"more-link\">Continue reading <span class=\"screen-reader-text\">Vim.js &#8211; JavaScript port of Vim<\/span><\/a><\/p>\n<!-- google_ad_section_end -->\n","protected":false},"author":2,"featured_media":0,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"_monsterinsights_skip_tracking":false,"_monsterinsights_sitenote_active":false,"_monsterinsights_sitenote_note":"","_monsterinsights_sitenote_category":0,"_jetpack_newsletter_access":"","_jetpack_dont_email_post_to_subs":false,"_jetpack_newsletter_tier_id":0,"_jetpack_memberships_contains_paywalled_content":false,"_jetpack_feature_clip_id":0,"_jetpack_memberships_contains_paid_content":false,"footnotes":"","jetpack_publicize_message":"","jetpack_publicize_feature_enabled":true,"jetpack_social_post_already_shared":true,"jetpack_social_options":{"image_generator_settings":{"template":"highway","default_image_id":0,"font":"","enabled":false},"version":2},"jetpack_post_was_ever_published":false,"_links_to":"","_links_to_target":""},"categories":[1,18,62,1334],"tags":[1139,2297,3094],"keyring_services":[],"class_list":["post-18964","post","type-post","status-publish","format-standard","hentry","category-general","category-programming","category-technology","category-web-work","tag-javascript","tag-text-editors","tag-vim"],"aioseo_notices":[],"aioseo_head":"\n\t\t<!-- All in One SEO 4.9.8 - aioseo.com -->\n\t<meta name=\"description\" content=\"Atwood&#039;s Law - any application that can be written in JavaScript, will eventually be written in JavaScript - seems to be getting more and more traction. Here is the newest example - Vim.js - a JavaScript port of the popular editor Vim. This is not a production day-to-day ready software yet, but it&#039;s a good start.\" \/>\n\t<meta name=\"robots\" content=\"max-image-preview:large\" \/>\n\t<meta name=\"author\" content=\"Leonid Mamchenkov\"\/>\n\t<meta name=\"google-site-verification\" content=\"VHvdD0_usx1_4DzKy_QCVcICVgX2EgA2ybELT-wl7kQ\" \/>\n\t<link rel=\"canonical\" href=\"https:\/\/mamchenkov.net\/wordpress\/2013\/12\/14\/vim-js-javascript-port-of-vim\/\" \/>\n\t<meta name=\"generator\" content=\"All in One SEO (AIOSEO) 4.9.8\" \/>\n\t\t<meta property=\"og:locale\" content=\"en_US\" \/>\n\t\t<meta property=\"og:site_name\" content=\"Leonid Mamchenkov - Life, universe, and everything else\" \/>\n\t\t<meta property=\"og:type\" content=\"article\" \/>\n\t\t<meta property=\"og:title\" content=\"Vim.js \u2013 JavaScript port of Vim - Leonid Mamchenkov\" \/>\n\t\t<meta property=\"og:description\" content=\"Atwood&#039;s Law - any application that can be written in JavaScript, will eventually be written in JavaScript - seems to be getting more and more traction. Here is the newest example - Vim.js - a JavaScript port of the popular editor Vim. This is not a production day-to-day ready software yet, but it&#039;s a good start.\" \/>\n\t\t<meta property=\"og:url\" content=\"https:\/\/mamchenkov.net\/wordpress\/2013\/12\/14\/vim-js-javascript-port-of-vim\/\" \/>\n\t\t<meta property=\"og:image\" content=\"https:\/\/mamchenkov.net\/wordpress\/wp-content\/uploads\/2026\/03\/leonid-sailing-beer.jpg\" \/>\n\t\t<meta property=\"og:image:secure_url\" content=\"https:\/\/mamchenkov.net\/wordpress\/wp-content\/uploads\/2026\/03\/leonid-sailing-beer.jpg\" \/>\n\t\t<meta property=\"og:image:width\" content=\"1024\" \/>\n\t\t<meta property=\"og:image:height\" content=\"1024\" \/>\n\t\t<meta property=\"article:published_time\" content=\"2013-12-14T11:46:47+00:00\" \/>\n\t\t<meta property=\"article:modified_time\" content=\"2013-12-14T11:47:15+00:00\" \/>\n\t\t<meta property=\"article:publisher\" content=\"https:\/\/www.facebook.com\/MamchenkovBlog\" \/>\n\t\t<meta name=\"twitter:card\" content=\"summary_large_image\" \/>\n\t\t<meta name=\"twitter:site\" content=\"@mamchenkov\" \/>\n\t\t<meta name=\"twitter:title\" content=\"Vim.js \u2013 JavaScript port of Vim - Leonid Mamchenkov\" \/>\n\t\t<meta name=\"twitter:description\" content=\"Atwood&#039;s Law - any application that can be written in JavaScript, will eventually be written in JavaScript - seems to be getting more and more traction. Here is the newest example - Vim.js - a JavaScript port of the popular editor Vim. This is not a production day-to-day ready software yet, but it&#039;s a good start.\" \/>\n\t\t<meta name=\"twitter:creator\" content=\"@mamchenkov\" \/>\n\t\t<meta name=\"twitter:image\" content=\"https:\/\/mamchenkov.net\/wordpress\/wp-content\/uploads\/2026\/03\/leonid-sailing-beer.jpg\" \/>\n\t\t<script type=\"application\/ld+json\" class=\"aioseo-schema\">\n\t\t\t{\"@context\":\"https:\\\/\\\/schema.org\",\"@graph\":[{\"@type\":\"BlogPosting\",\"@id\":\"https:\\\/\\\/mamchenkov.net\\\/wordpress\\\/2013\\\/12\\\/14\\\/vim-js-javascript-port-of-vim\\\/#blogposting\",\"name\":\"Vim.js \\u2013 JavaScript port of Vim - Leonid Mamchenkov\",\"headline\":\"Vim.js &#8211; JavaScript port of Vim\",\"author\":{\"@id\":\"https:\\\/\\\/mamchenkov.net\\\/wordpress\\\/author\\\/leonid\\\/#author\"},\"publisher\":{\"@id\":\"https:\\\/\\\/mamchenkov.net\\\/wordpress\\\/#person\"},\"image\":{\"@type\":\"ImageObject\",\"url\":\"https:\\\/\\\/mamchenkov.net\\\/wordpress\\\/wp-content\\\/uploads\\\/2013\\\/12\\\/vim.js-500x369.png\",\"@id\":\"https:\\\/\\\/mamchenkov.net\\\/wordpress\\\/2013\\\/12\\\/14\\\/vim-js-javascript-port-of-vim\\\/#articleImage\"},\"datePublished\":\"2013-12-14T13:46:47+02:00\",\"dateModified\":\"2013-12-14T13:47:15+02:00\",\"inLanguage\":\"en-US\",\"commentCount\":1,\"mainEntityOfPage\":{\"@id\":\"https:\\\/\\\/mamchenkov.net\\\/wordpress\\\/2013\\\/12\\\/14\\\/vim-js-javascript-port-of-vim\\\/#webpage\"},\"isPartOf\":{\"@id\":\"https:\\\/\\\/mamchenkov.net\\\/wordpress\\\/2013\\\/12\\\/14\\\/vim-js-javascript-port-of-vim\\\/#webpage\"},\"articleSection\":\"All, Programming, Technology, Web work, JavaScript, text editors, Vim\"},{\"@type\":\"BreadcrumbList\",\"@id\":\"https:\\\/\\\/mamchenkov.net\\\/wordpress\\\/2013\\\/12\\\/14\\\/vim-js-javascript-port-of-vim\\\/#breadcrumblist\",\"itemListElement\":[{\"@type\":\"ListItem\",\"@id\":\"https:\\\/\\\/mamchenkov.net\\\/wordpress#listItem\",\"position\":1,\"name\":\"Home\",\"item\":\"https:\\\/\\\/mamchenkov.net\\\/wordpress\",\"nextItem\":{\"@type\":\"ListItem\",\"@id\":\"https:\\\/\\\/mamchenkov.net\\\/wordpress\\\/category\\\/technology\\\/#listItem\",\"name\":\"Technology\"}},{\"@type\":\"ListItem\",\"@id\":\"https:\\\/\\\/mamchenkov.net\\\/wordpress\\\/category\\\/technology\\\/#listItem\",\"position\":2,\"name\":\"Technology\",\"item\":\"https:\\\/\\\/mamchenkov.net\\\/wordpress\\\/category\\\/technology\\\/\",\"nextItem\":{\"@type\":\"ListItem\",\"@id\":\"https:\\\/\\\/mamchenkov.net\\\/wordpress\\\/category\\\/technology\\\/programming\\\/#listItem\",\"name\":\"Programming\"},\"previousItem\":{\"@type\":\"ListItem\",\"@id\":\"https:\\\/\\\/mamchenkov.net\\\/wordpress#listItem\",\"name\":\"Home\"}},{\"@type\":\"ListItem\",\"@id\":\"https:\\\/\\\/mamchenkov.net\\\/wordpress\\\/category\\\/technology\\\/programming\\\/#listItem\",\"position\":3,\"name\":\"Programming\",\"item\":\"https:\\\/\\\/mamchenkov.net\\\/wordpress\\\/category\\\/technology\\\/programming\\\/\",\"nextItem\":{\"@type\":\"ListItem\",\"@id\":\"https:\\\/\\\/mamchenkov.net\\\/wordpress\\\/2013\\\/12\\\/14\\\/vim-js-javascript-port-of-vim\\\/#listItem\",\"name\":\"Vim.js &#8211; JavaScript port of Vim\"},\"previousItem\":{\"@type\":\"ListItem\",\"@id\":\"https:\\\/\\\/mamchenkov.net\\\/wordpress\\\/category\\\/technology\\\/#listItem\",\"name\":\"Technology\"}},{\"@type\":\"ListItem\",\"@id\":\"https:\\\/\\\/mamchenkov.net\\\/wordpress\\\/2013\\\/12\\\/14\\\/vim-js-javascript-port-of-vim\\\/#listItem\",\"position\":4,\"name\":\"Vim.js &#8211; JavaScript port of Vim\",\"previousItem\":{\"@type\":\"ListItem\",\"@id\":\"https:\\\/\\\/mamchenkov.net\\\/wordpress\\\/category\\\/technology\\\/programming\\\/#listItem\",\"name\":\"Programming\"}}]},{\"@type\":\"Person\",\"@id\":\"https:\\\/\\\/mamchenkov.net\\\/wordpress\\\/#person\",\"name\":\"Leonid Mamchenkov\",\"image\":{\"@type\":\"ImageObject\",\"@id\":\"https:\\\/\\\/mamchenkov.net\\\/wordpress\\\/2013\\\/12\\\/14\\\/vim-js-javascript-port-of-vim\\\/#personImage\",\"url\":\"https:\\\/\\\/secure.gravatar.com\\\/avatar\\\/3cf6df002a284d78fb6e9d8222ca4d102e0832035ed6bc8447008bd234e131a4?s=96&d=identicon&r=g\",\"width\":96,\"height\":96,\"caption\":\"Leonid Mamchenkov\"}},{\"@type\":\"Person\",\"@id\":\"https:\\\/\\\/mamchenkov.net\\\/wordpress\\\/author\\\/leonid\\\/#author\",\"url\":\"https:\\\/\\\/mamchenkov.net\\\/wordpress\\\/author\\\/leonid\\\/\",\"name\":\"Leonid Mamchenkov\",\"image\":{\"@type\":\"ImageObject\",\"@id\":\"https:\\\/\\\/mamchenkov.net\\\/wordpress\\\/2013\\\/12\\\/14\\\/vim-js-javascript-port-of-vim\\\/#authorImage\",\"url\":\"https:\\\/\\\/secure.gravatar.com\\\/avatar\\\/3cf6df002a284d78fb6e9d8222ca4d102e0832035ed6bc8447008bd234e131a4?s=96&d=identicon&r=g\",\"width\":96,\"height\":96,\"caption\":\"Leonid Mamchenkov\"}},{\"@type\":\"WebPage\",\"@id\":\"https:\\\/\\\/mamchenkov.net\\\/wordpress\\\/2013\\\/12\\\/14\\\/vim-js-javascript-port-of-vim\\\/#webpage\",\"url\":\"https:\\\/\\\/mamchenkov.net\\\/wordpress\\\/2013\\\/12\\\/14\\\/vim-js-javascript-port-of-vim\\\/\",\"name\":\"Vim.js \\u2013 JavaScript port of Vim - Leonid Mamchenkov\",\"description\":\"Atwood's Law - any application that can be written in JavaScript, will eventually be written in JavaScript - seems to be getting more and more traction. Here is the newest example - Vim.js - a JavaScript port of the popular editor Vim. This is not a production day-to-day ready software yet, but it's a good start.\",\"inLanguage\":\"en-US\",\"isPartOf\":{\"@id\":\"https:\\\/\\\/mamchenkov.net\\\/wordpress\\\/#website\"},\"breadcrumb\":{\"@id\":\"https:\\\/\\\/mamchenkov.net\\\/wordpress\\\/2013\\\/12\\\/14\\\/vim-js-javascript-port-of-vim\\\/#breadcrumblist\"},\"author\":{\"@id\":\"https:\\\/\\\/mamchenkov.net\\\/wordpress\\\/author\\\/leonid\\\/#author\"},\"creator\":{\"@id\":\"https:\\\/\\\/mamchenkov.net\\\/wordpress\\\/author\\\/leonid\\\/#author\"},\"datePublished\":\"2013-12-14T13:46:47+02:00\",\"dateModified\":\"2013-12-14T13:47:15+02:00\"},{\"@type\":\"WebSite\",\"@id\":\"https:\\\/\\\/mamchenkov.net\\\/wordpress\\\/#website\",\"url\":\"https:\\\/\\\/mamchenkov.net\\\/wordpress\\\/\",\"name\":\"Blog of Leonid Mamchenkov\",\"description\":\"Life, universe, and everything else\",\"inLanguage\":\"en-US\",\"publisher\":{\"@id\":\"https:\\\/\\\/mamchenkov.net\\\/wordpress\\\/#person\"}}]}\n\t\t<\/script>\n\t\t<!-- All in One SEO -->\n\n","aioseo_head_json":{"title":"Vim.js \u2013 JavaScript port of Vim - Leonid Mamchenkov","description":"Atwood's Law - any application that can be written in JavaScript, will eventually be written in JavaScript - seems to be getting more and more traction. Here is the newest example - Vim.js - a JavaScript port of the popular editor Vim. This is not a production day-to-day ready software yet, but it's a good start.","canonical_url":"https:\/\/mamchenkov.net\/wordpress\/2013\/12\/14\/vim-js-javascript-port-of-vim\/","robots":"max-image-preview:large","keywords":"","webmasterTools":{"google-site-verification":"VHvdD0_usx1_4DzKy_QCVcICVgX2EgA2ybELT-wl7kQ","miscellaneous":""},"schema":{"@context":"https:\/\/schema.org","@graph":[{"@type":"BlogPosting","@id":"https:\/\/mamchenkov.net\/wordpress\/2013\/12\/14\/vim-js-javascript-port-of-vim\/#blogposting","name":"Vim.js \u2013 JavaScript port of Vim - Leonid Mamchenkov","headline":"Vim.js &#8211; JavaScript port of Vim","author":{"@id":"https:\/\/mamchenkov.net\/wordpress\/author\/leonid\/#author"},"publisher":{"@id":"https:\/\/mamchenkov.net\/wordpress\/#person"},"image":{"@type":"ImageObject","url":"https:\/\/mamchenkov.net\/wordpress\/wp-content\/uploads\/2013\/12\/vim.js-500x369.png","@id":"https:\/\/mamchenkov.net\/wordpress\/2013\/12\/14\/vim-js-javascript-port-of-vim\/#articleImage"},"datePublished":"2013-12-14T13:46:47+02:00","dateModified":"2013-12-14T13:47:15+02:00","inLanguage":"en-US","commentCount":1,"mainEntityOfPage":{"@id":"https:\/\/mamchenkov.net\/wordpress\/2013\/12\/14\/vim-js-javascript-port-of-vim\/#webpage"},"isPartOf":{"@id":"https:\/\/mamchenkov.net\/wordpress\/2013\/12\/14\/vim-js-javascript-port-of-vim\/#webpage"},"articleSection":"All, Programming, Technology, Web work, JavaScript, text editors, Vim"},{"@type":"BreadcrumbList","@id":"https:\/\/mamchenkov.net\/wordpress\/2013\/12\/14\/vim-js-javascript-port-of-vim\/#breadcrumblist","itemListElement":[{"@type":"ListItem","@id":"https:\/\/mamchenkov.net\/wordpress#listItem","position":1,"name":"Home","item":"https:\/\/mamchenkov.net\/wordpress","nextItem":{"@type":"ListItem","@id":"https:\/\/mamchenkov.net\/wordpress\/category\/technology\/#listItem","name":"Technology"}},{"@type":"ListItem","@id":"https:\/\/mamchenkov.net\/wordpress\/category\/technology\/#listItem","position":2,"name":"Technology","item":"https:\/\/mamchenkov.net\/wordpress\/category\/technology\/","nextItem":{"@type":"ListItem","@id":"https:\/\/mamchenkov.net\/wordpress\/category\/technology\/programming\/#listItem","name":"Programming"},"previousItem":{"@type":"ListItem","@id":"https:\/\/mamchenkov.net\/wordpress#listItem","name":"Home"}},{"@type":"ListItem","@id":"https:\/\/mamchenkov.net\/wordpress\/category\/technology\/programming\/#listItem","position":3,"name":"Programming","item":"https:\/\/mamchenkov.net\/wordpress\/category\/technology\/programming\/","nextItem":{"@type":"ListItem","@id":"https:\/\/mamchenkov.net\/wordpress\/2013\/12\/14\/vim-js-javascript-port-of-vim\/#listItem","name":"Vim.js &#8211; JavaScript port of Vim"},"previousItem":{"@type":"ListItem","@id":"https:\/\/mamchenkov.net\/wordpress\/category\/technology\/#listItem","name":"Technology"}},{"@type":"ListItem","@id":"https:\/\/mamchenkov.net\/wordpress\/2013\/12\/14\/vim-js-javascript-port-of-vim\/#listItem","position":4,"name":"Vim.js &#8211; JavaScript port of Vim","previousItem":{"@type":"ListItem","@id":"https:\/\/mamchenkov.net\/wordpress\/category\/technology\/programming\/#listItem","name":"Programming"}}]},{"@type":"Person","@id":"https:\/\/mamchenkov.net\/wordpress\/#person","name":"Leonid Mamchenkov","image":{"@type":"ImageObject","@id":"https:\/\/mamchenkov.net\/wordpress\/2013\/12\/14\/vim-js-javascript-port-of-vim\/#personImage","url":"https:\/\/secure.gravatar.com\/avatar\/3cf6df002a284d78fb6e9d8222ca4d102e0832035ed6bc8447008bd234e131a4?s=96&d=identicon&r=g","width":96,"height":96,"caption":"Leonid Mamchenkov"}},{"@type":"Person","@id":"https:\/\/mamchenkov.net\/wordpress\/author\/leonid\/#author","url":"https:\/\/mamchenkov.net\/wordpress\/author\/leonid\/","name":"Leonid Mamchenkov","image":{"@type":"ImageObject","@id":"https:\/\/mamchenkov.net\/wordpress\/2013\/12\/14\/vim-js-javascript-port-of-vim\/#authorImage","url":"https:\/\/secure.gravatar.com\/avatar\/3cf6df002a284d78fb6e9d8222ca4d102e0832035ed6bc8447008bd234e131a4?s=96&d=identicon&r=g","width":96,"height":96,"caption":"Leonid Mamchenkov"}},{"@type":"WebPage","@id":"https:\/\/mamchenkov.net\/wordpress\/2013\/12\/14\/vim-js-javascript-port-of-vim\/#webpage","url":"https:\/\/mamchenkov.net\/wordpress\/2013\/12\/14\/vim-js-javascript-port-of-vim\/","name":"Vim.js \u2013 JavaScript port of Vim - Leonid Mamchenkov","description":"Atwood's Law - any application that can be written in JavaScript, will eventually be written in JavaScript - seems to be getting more and more traction. Here is the newest example - Vim.js - a JavaScript port of the popular editor Vim. This is not a production day-to-day ready software yet, but it's a good start.","inLanguage":"en-US","isPartOf":{"@id":"https:\/\/mamchenkov.net\/wordpress\/#website"},"breadcrumb":{"@id":"https:\/\/mamchenkov.net\/wordpress\/2013\/12\/14\/vim-js-javascript-port-of-vim\/#breadcrumblist"},"author":{"@id":"https:\/\/mamchenkov.net\/wordpress\/author\/leonid\/#author"},"creator":{"@id":"https:\/\/mamchenkov.net\/wordpress\/author\/leonid\/#author"},"datePublished":"2013-12-14T13:46:47+02:00","dateModified":"2013-12-14T13:47:15+02:00"},{"@type":"WebSite","@id":"https:\/\/mamchenkov.net\/wordpress\/#website","url":"https:\/\/mamchenkov.net\/wordpress\/","name":"Blog of Leonid Mamchenkov","description":"Life, universe, and everything else","inLanguage":"en-US","publisher":{"@id":"https:\/\/mamchenkov.net\/wordpress\/#person"}}]},"og:locale":"en_US","og:site_name":"Leonid Mamchenkov - Life, universe, and everything else","og:type":"article","og:title":"Vim.js \u2013 JavaScript port of Vim - Leonid Mamchenkov","og:description":"Atwood's Law - any application that can be written in JavaScript, will eventually be written in JavaScript - seems to be getting more and more traction. Here is the newest example - Vim.js - a JavaScript port of the popular editor Vim. This is not a production day-to-day ready software yet, but it's a good start.","og:url":"https:\/\/mamchenkov.net\/wordpress\/2013\/12\/14\/vim-js-javascript-port-of-vim\/","og:image":"https:\/\/mamchenkov.net\/wordpress\/wp-content\/uploads\/2026\/03\/leonid-sailing-beer.jpg","og:image:secure_url":"https:\/\/mamchenkov.net\/wordpress\/wp-content\/uploads\/2026\/03\/leonid-sailing-beer.jpg","og:image:width":1024,"og:image:height":1024,"article:published_time":"2013-12-14T11:46:47+00:00","article:modified_time":"2013-12-14T11:47:15+00:00","article:publisher":"https:\/\/www.facebook.com\/MamchenkovBlog","twitter:card":"summary_large_image","twitter:site":"@mamchenkov","twitter:title":"Vim.js \u2013 JavaScript port of Vim - Leonid Mamchenkov","twitter:description":"Atwood's Law - any application that can be written in JavaScript, will eventually be written in JavaScript - seems to be getting more and more traction. Here is the newest example - Vim.js - a JavaScript port of the popular editor Vim. This is not a production day-to-day ready software yet, but it's a good start.","twitter:creator":"@mamchenkov","twitter:image":"https:\/\/mamchenkov.net\/wordpress\/wp-content\/uploads\/2026\/03\/leonid-sailing-beer.jpg"},"aioseo_meta_data":{"post_id":"18964","title":null,"description":null,"keywords":null,"keyphrases":null,"primary_term":null,"canonical_url":null,"og_title":null,"og_description":null,"og_object_type":"default","og_image_type":"default","og_image_url":null,"og_image_width":null,"og_image_height":null,"og_image_custom_url":null,"og_image_custom_fields":null,"og_video":null,"og_custom_url":null,"og_article_section":null,"og_article_tags":null,"twitter_use_og":false,"twitter_card":"default","twitter_image_type":"default","twitter_image_url":null,"twitter_image_custom_url":null,"twitter_image_custom_fields":null,"twitter_title":null,"twitter_description":null,"schema":{"blockGraphs":[],"customGraphs":[],"default":{"data":{"Article":[],"Course":[],"Dataset":[],"FAQPage":[],"Movie":[],"Person":[],"Product":[],"ProductReview":[],"Car":[],"Recipe":[],"Service":[],"SoftwareApplication":[],"WebPage":[]},"graphName":"","isEnabled":true},"graphs":[]},"schema_type":"default","schema_type_options":null,"pillar_content":false,"robots_default":true,"robots_noindex":false,"robots_noarchive":false,"robots_nosnippet":false,"robots_nofollow":false,"robots_noimageindex":false,"robots_noodp":false,"robots_notranslate":false,"robots_max_snippet":null,"robots_max_videopreview":null,"robots_max_imagepreview":"large","priority":null,"frequency":null,"local_seo":null,"breadcrumb_settings":null,"limit_modified_date":false,"ai":null,"created":"2023-07-20 01:39:38","updated":"2026-01-15 09:56:03","seo_analyzer_scan_date":null},"aioseo_breadcrumb":"<div class=\"aioseo-breadcrumbs\"><span class=\"aioseo-breadcrumb\">\n\t\t\t<a href=\"https:\/\/mamchenkov.net\/wordpress\" title=\"Home\">Home<\/a>\n\t\t<\/span><span class=\"aioseo-breadcrumb-separator\">&raquo;<\/span><span class=\"aioseo-breadcrumb\">\n\t\t\t<a href=\"https:\/\/mamchenkov.net\/wordpress\/category\/technology\/\" title=\"Technology\">Technology<\/a>\n\t\t<\/span><span class=\"aioseo-breadcrumb-separator\">&raquo;<\/span><span class=\"aioseo-breadcrumb\">\n\t\t\t<a href=\"https:\/\/mamchenkov.net\/wordpress\/category\/technology\/programming\/\" title=\"Programming\">Programming<\/a>\n\t\t<\/span><span class=\"aioseo-breadcrumb-separator\">&raquo;<\/span><span class=\"aioseo-breadcrumb\">\n\t\t\tVim.js \u2013 JavaScript port of Vim\n\t\t<\/span><\/div>","aioseo_breadcrumb_json":[{"label":"Home","link":"https:\/\/mamchenkov.net\/wordpress"},{"label":"Technology","link":"https:\/\/mamchenkov.net\/wordpress\/category\/technology\/"},{"label":"Programming","link":"https:\/\/mamchenkov.net\/wordpress\/category\/technology\/programming\/"},{"label":"Vim.js &#8211; JavaScript port of Vim","link":"https:\/\/mamchenkov.net\/wordpress\/2013\/12\/14\/vim-js-javascript-port-of-vim\/"}],"jetpack_publicize_connections":[],"jetpack_featured_media_url":"","jetpack-related-posts":[{"id":15660,"url":"https:\/\/mamchenkov.net\/wordpress\/2011\/10\/04\/day-in-brief-2011-10-04\/","url_meta":{"origin":18964,"position":0},"title":"Day in brief &#8211; 2011-10-04","author":"Leonid Mamchenkov","date":"October 4, 2011","format":false,"excerpt":"Shared: Is A Tomato A Fruit Or A Vegetable? http:\/\/t.co\/TX4Q9cvA # The Nine Circles of IT Hell - Slashdot http:\/\/t.co\/NLeG5yKO # \u041f\u0438\u0441\u044c\u043c\u043e \u0438\u0437 \u043e\u043a\u0442\u044f\u0431\u0440\u044f 1941 - \u041f\u043e\u0431\u0435\u0434\u0430! http:\/\/t.co\/9sHV66z8 # I favorited a @YouTube video http:\/\/t.co\/Tu3unWlg FPV Proximity Flying # I favorited a @YouTube video http:\/\/t.co\/rH2zLLqF Wingsuit BASE Jumping - Shane\u2026","rel":"","context":"In &quot;All&quot;","block_context":{"text":"All","link":"https:\/\/mamchenkov.net\/wordpress\/category\/general\/"},"img":{"alt_text":"","src":"","width":0,"height":0},"classes":[]},{"id":22177,"url":"https:\/\/mamchenkov.net\/wordpress\/2014\/07\/12\/breach-a-browser-written-entirely-in-javascript\/","url_meta":{"origin":18964,"position":1},"title":"Breach &#8211; a browser written entirely in JavaScript","author":"Leonid Mamchenkov","date":"July 12, 2014","format":"link","excerpt":"Breach - a browser written entirely in JavaScript. \u00a0Free, modular, hackable, Open Source.","rel":"","context":"In &quot;All&quot;","block_context":{"text":"All","link":"https:\/\/mamchenkov.net\/wordpress\/category\/general\/"},"img":{"alt_text":"Breach","src":"https:\/\/i0.wp.com\/mamchenkov.net\/wordpress\/wp-content\/uploads\/2014\/07\/Breach-500x395.png?resize=350%2C200&ssl=1","width":350,"height":200},"classes":[]},{"id":28412,"url":"https:\/\/mamchenkov.net\/wordpress\/2018\/02\/26\/winamp2-js-implementation-of-winamp-2-9-in-html5-and-javascript\/","url_meta":{"origin":18964,"position":2},"title":"Winamp2-js &#8211; implementation of Winamp 2.9 in HTML5 and JavaScript","author":"Leonid Mamchenkov","date":"February 26, 2018","format":false,"excerpt":"Atwood's Law states that any application that can be written in JavaScript, will eventually be written in JavaScript.\u00a0 Winamp2-js is yet another example supporting this law.\u00a0 It is a re-implementation of Winamp 2.9, a classic Windows MP3 player from decades ago, done in HTML5 and JavaScript. The source code is\u2026","rel":"","context":"In &quot;All&quot;","block_context":{"text":"All","link":"https:\/\/mamchenkov.net\/wordpress\/category\/general\/"},"img":{"alt_text":"","src":"https:\/\/i0.wp.com\/mamchenkov.net\/wordpress\/wp-content\/uploads\/2018\/02\/winamp.png?resize=350%2C200&ssl=1","width":350,"height":200},"classes":[]},{"id":28152,"url":"https:\/\/mamchenkov.net\/wordpress\/2017\/10\/25\/modern-javascript-explained-for-dinosaurs\/","url_meta":{"origin":18964,"position":3},"title":"Modern JavaScript Explained For Dinosaurs","author":"Leonid Mamchenkov","date":"October 25, 2017","format":false,"excerpt":"\"Modern JavaScript Explained For Dinosaurs\" is one of those quick and easy guides to the modern world of JavaScript, written for people who learned to code in the language back in the 90's and now have to come back or manage those hipster kids who use JavaScript as the only\u2026","rel":"","context":"In &quot;All&quot;","block_context":{"text":"All","link":"https:\/\/mamchenkov.net\/wordpress\/category\/general\/"},"img":{"alt_text":"","src":"https:\/\/i0.wp.com\/mamchenkov.net\/wordpress\/wp-content\/uploads\/2017\/10\/modern-javascript-500x325.png?resize=350%2C200&ssl=1","width":350,"height":200},"classes":[]},{"id":28627,"url":"https:\/\/mamchenkov.net\/wordpress\/2018\/06\/12\/inflected-a-port-of-activesupports-inflector-to-node-js-and-the-browser\/","url_meta":{"origin":18964,"position":4},"title":"Inflected &#8211; a port of ActiveSupport&#8217;s inflector to Node.js and the browser","author":"Leonid Mamchenkov","date":"June 12, 2018","format":false,"excerpt":"For the last few years I have been heavily involved in building web applications with the CakePHP framework.\u00a0 Apart from all the usual MVC, ORM, and so on, and so forth, features, I am a big fan of the CakePHP utilities.\u00a0 And among all of them, my long time favorite\u2026","rel":"","context":"In &quot;All&quot;","block_context":{"text":"All","link":"https:\/\/mamchenkov.net\/wordpress\/category\/general\/"},"img":{"alt_text":"","src":"","width":0,"height":0},"classes":[]},{"id":16168,"url":"https:\/\/mamchenkov.net\/wordpress\/2012\/03\/18\/weekly-digest-2012-03-18\/","url_meta":{"origin":18964,"position":5},"title":"Weekly digest &#8211; 2012-03-18","author":"Leonid Mamchenkov","date":"March 18, 2012","format":false,"excerpt":"I favorited a @YouTube video http:\/\/t.co\/WFzEmpkE SHORT stories - \"Fresh Guacamole\" - PES # http:\/\/t.co\/YeM026gi - Crazy complicated Wine De-corking Machine! http:\/\/t.co\/X3nSrFau # I favorited a @YouTube video http:\/\/t.co\/naKAnFhX Invisible Mercedes # I saw in the news \"Evernote web interface has been redesigned\".That made me very happy.Until I realized it\u2026","rel":"","context":"In &quot;All&quot;","block_context":{"text":"All","link":"https:\/\/mamchenkov.net\/wordpress\/category\/general\/"},"img":{"alt_text":"","src":"","width":0,"height":0},"classes":[]}],"jetpack_sharing_enabled":true,"amp_enabled":true,"_links":{"self":[{"href":"https:\/\/mamchenkov.net\/wordpress\/wp-json\/wp\/v2\/posts\/18964","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/mamchenkov.net\/wordpress\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/mamchenkov.net\/wordpress\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/mamchenkov.net\/wordpress\/wp-json\/wp\/v2\/users\/2"}],"replies":[{"embeddable":true,"href":"https:\/\/mamchenkov.net\/wordpress\/wp-json\/wp\/v2\/comments?post=18964"}],"version-history":[{"count":0,"href":"https:\/\/mamchenkov.net\/wordpress\/wp-json\/wp\/v2\/posts\/18964\/revisions"}],"wp:attachment":[{"href":"https:\/\/mamchenkov.net\/wordpress\/wp-json\/wp\/v2\/media?parent=18964"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/mamchenkov.net\/wordpress\/wp-json\/wp\/v2\/categories?post=18964"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/mamchenkov.net\/wordpress\/wp-json\/wp\/v2\/tags?post=18964"},{"taxonomy":"keyring_services","embeddable":true,"href":"https:\/\/mamchenkov.net\/wordpress\/wp-json\/wp\/v2\/keyring_services?post=18964"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}