Vim no es un editor, sino un marco de trabajo | Programador Web Valencia

Vim no es un editor, sino un marco de trabajo

3 minutos

Logo de Vim

Vim se considera un editor de texto para terminal, pero ¿es realmente un editor? ¿O es un entorno de desarrollo? ¿Un juguete para devs? ¿Tal vez un conjunto de atajos? Me gustaría responder a estas preguntas y explicar por qué creo que Vim se confunde con un editor de texto cuando en el fondo es un marco de trabajo (framework).

Bill Joy escribió en 1978 un editor en línea llamado Ex, abreviatura de EXtended. Más adelante, con las siguientes versiones, en 1979 se añadieron mejoras y se cambió el nombre a Vi (abreviatura de Visual). Después, en 1991, Bram Moolenaar creó Vim (Vi IMproved), un clon para Amiga. Y finalmente, en 2015, Thiago de Arruda creó Neovim, un fork de Vim con el objetivo de incluir de serie características que se resistía a incluir en el repositorio como Language Server Protocol (LSP) o soporte para asincronía. En otras palabras, Vim se ha rescrito varias veces desde los años 70 hasta la actualidad. En ciertas circunstancias partiendo de cero y en otros basándose en el código de alguna versión anterior. Nos parece natural, pero no lo es para nada. Otros editores, como puede ser Emacs, es más antiguo y se ha escrito en una ocasión (su versión 1.0 es de 1976). Vim puede permitírselo porque sus cimientos, la forma de trabajar con el editor, esta bien delimitada, es simple e independiente a la implementación. Vim es un protocolo que no ha variado en medio siglo.

Su implementación es variada, lo cual también es peculiar. Si quiero programar con Vim, ya que es el uso más extendido entre los usuarios, tengo 4 formas:

  • Nativamente: Usando Vim en terminal o cualquier interfaz gráfica como gVim o MacVim.
  • Emulando: Utilizas todas las capacidades del editor que quieras (como puede ser Eclipse o VSCode), pero disponse de todos los atajos y modos de Vim (Normal Mode, Insert Mode, Visual Mode, etc). Lo logras a partir de un plugin como VsVim para Visual Studio, Evil para Emacs, VSCodeVim para Visual Studio Code o IdeaVim para IntelliJ, entre muchos otros.
  • API de Neovim: Usando el core de Neovim puedes interactuar con la lógica de Vim. Es más, desde cualquier editor puedes lograr un espejo en funcionalidades. Por ejemplo, Oni es un editor de código abierto que utiliza Electron y la API de Neovim. O también Sublime Text, que utiliza la API de Neovim logrando resultados muy buenos. Es una forma tan cercana a Vim que sigue requiriendo usar un archivo de configuración compatible con Neovim.
  • Atajos de teclado (peor forma): Puedes usando los atajos de teclado en software que no sea un editor de texto, pero pierdes acceso a los modos de Vim. Por ejemplo, si estoy usando Firefox, dispongo de la extensión Vimium para navegar, pero olvídate de usar el modo Insert. Es un punto intermedio donde muchos programas agradan a sus usuarios dando algunas ayudas reconocibles de Vim.

Es bastante peculiar sus implementaciones. ¿Os imagináis la posibilidad de usar las funcionalidades de edición, que no atajos, de VSCode dentro de IntelliJ? Sería una idea absurda. Lo más razonable es aprender a usar IntelliJ y VSCode por separado. Pero en Vim no es así, puedes usarlo en cualquier editor. Y es más, puedes usar Vim en cualquier software que posea una interfaz de usuario. Es posible porque Vim no es un editor, sino un protocolo de comunicación entre el usuario y el software: un marco, o framework, de trabajo. Ahora se nos hace más fácil responder a la recurrente pregunta de «¿Vim o Emacs?». Ya carece de contexto sin antes hacernos una preguntas previas: «¿Quieres usar los estándares de atajos o una alternativa como Vim?», y si se responde con Vim: «¿En el editor: Vim, Emacs u otro?». La emulación de Vim en Emacs es perfecta, pero Vim es incapaz de emular otros editores (y mucho menos Emacs) o formas de trabajo.

Es conclusión, Vim puede existir sin Vim. Me atrevería a decir que es una filosofía de trabajo. Si lo necesitas, puedes desprenderte del terminal para trabajar en editores modernos, manteniendo la esencia de Vim. En algún momento futuro los repositorios de Vim/Neovim morirán, pero alguien retomará el proyecto con un fork o una implementación desde cero usando algún lenguaje o tecnología moderna. Y esto es posible porque Vim es un marco de trabajo, no un editor.

Esta obra está bajo una Licencia Creative Commons Atribución-NoComercial-SinDerivadas 4.0 Internacional.

Atribución/Reconocimiento-NoComercial-SinDerivados 4.0 Internacional

¿Me ayudas?

Comprame un café
Pulsa sobre la imagen

No te sientas obligado a realizar una donación, pero cada aportación mantiene el sitio en activo logrando que continúe existiendo y sea accesible para otras personas. Además me motiva a crear nuevo contenido.

Comentarios

{{ comments.length }} comentarios

Nuevo comentario

Nueva replica  {{ formatEllipsisAuthor(replyComment.author) }}

Acepto la política de Protección de Datos.

Escribe el primer comentario

Tal vez también te interese...