Dice la Wikipedia: “Vim (del inglés Vi IMproved) es una versión mejorada del editor de texto vi, presente en todos los sistemas UNIX”. Su autor es Bram Moolenaar, quien hizo pública una primera versión en 1991 y a partir de ahí el producto ha cambiado mucho con el tiempo. Su principal característica tanto de Vim como de Vi consiste en que disponen de diferentes modos entre los que se alterna para realizar ciertas operaciones, lo que los diferencia de la mayoría de editores comunes, que tienen un sólo modo en el que se introducen las órdenes mediante combinaciones de teclas o interfaces gráficas.

Y todo esto viene a cuento pues ahora Vim está disponible en los navegadores. Así es, una versión de Vim ya viene escrita en Javascript. Vim, como editor base de Unix viene directamente del antiquísimo “vi”. A partir de esto ocurre que los que usan vi terminan siendo como abducidos por el editor y lo consideran su herramienta fundamental. En cambio, si usan Emacs, les pasará algo parecido y todas sus labores las harán a partir de este editor, producto de Stallman y escrito originalmente en Lisp.

Por ello, vi, Vim  y Emacs son los editores que usan los “verdaderos” programadores. Los programadores de verdad no escriben código en Javascript. Vim estás escrito en C++ y Emscrpten compila C++ a Javascript, y esto es precisamente lo que ha hecho Lu Wang con Vim para producir así una versión portable de Vim a Javascript.

Todo programador sabe que el portar software de un lenguaje a otro no es una labor simple y de acuerdo a Wang, el peor problema que enfrentó es que todos los medios ambientes de Vim tenían una función asíncrona “sleep”, esto es, se podía usar sleep(t) sin bloquear toda la aplicación,. Pero Javascript es asíncrono y un solo hilo de ejecución que usaba sleep tenía que convertirse a las llamadas asíncronas. Como dice Wang: ” cuando Vim.js tronaba y se veía las funciones que había llamado, no se encontraban en la consola del navegador. Felicidades, una función más async había hecho su tarea”.

El programa es pues aún “inestable”, pero el autor pide ayuda a quien quiera meterse al proyecto. Basta visitar la página de GitHub. La pregunta es: ¿Para qué queremos Vim en el navegador?

Referencias:

Vim.js (GitHub)
Vim