325 - Adios Vim, hola NeoVim
¿Que razones te pueden llevar a cambiar Vim por NeoVim? Configuración mas sencilla e inteligible, un lenguaje de programación como Lua, y mas
Al igual que en los últimos episodios te he dicho que la Raspberry y Docker habían supuesto puntos de inflexión en mi relación con Linux en particular y la tecnología en general, Vim también forma parte de este elenco de hardware y software revolucionario para mi. Vim, también es de esas herramientas que han supuesto un antes y un después.
Sin embargo, y a pesar de todo, y un poco como me está sucediendo con Podman y Docker, esto mismo me ha sucedido con NeoVim y Vim. Aunque como digo, este cambio ya se ha precipitado, ya es una realidad.
Sin embargo, y a pesar de sustituir a Vim por NeoVim, lo cierto es que Vim es mas realidad que nunca. Lo tengo instalado en todos los editores que utilizo en el trabajo. Si, instalado como complemento, pero instalado al fin y al cabo.
¿Y entonces porque cambio de Vim a NeoVim?
Adios Vim, hola NeoVim
¿Porque es Vim revolucionario para mi?
Cuando hablo de Vim como revolucionario, me refiero a que ha supuesto una revolución para mi, en los términos que he indicado anteriormente. Y supone una revolución en lo que a moverte por el texto ser refiere. Escribir, editar, modificar, es realmente una gozada.
Llegados a este punto, tengo que confesarte que moverme en otros editores como es Nano o incluso en aplicaciones que nada tienen que ver como puede ser Teams de Microsoft se ha convertido en un auténtico suplicio. En mas de una ocasión mi texto viene acompañado de ciw
o 5j
o daw
…
Sin lugar a dudas, la combinación de Vim y markdown a la hora de escribir, es un antes y un después, por lo que he comentado en repetidas ocasiones, sobre la productividad, y que me permite centrarme en el contenido, si fijarme en otros aspectos menos importantes.
No solo esto, sino que además me permite soslayar por completo el problema de los estilos, que generalmente, la mayoría de usuarios no utiliza, y que sin embargo son fundamentales para ganar en productividad.
En cuanto a la edición de código, y de la misma manera que he comentado sobre markdown, me sucede cuando escribo código, pero sobre todo cuando edito código.
Sin embargo, ha sido quizá este punto, el de la edición de código el que me ha precipitado el cambio a NeoVim. Y es que a pesar de que existen multitud de complementos para Vim, nunca he llegado a conseguir la combinación perfecta de un analizar de código y una herramienta de autocompletado. A lo mejor tu si que lo has conseguido, pero, que esa combinación te funcione a ti, no quiere decir que a mi me funcione.
Para mi, tener una herramienta de análisis de código, al igual que tener un corrector ortográfico es obligatorio. Es muy fácil, que se te cuele un error, con lo que tenerlos bajo control es mas que necesario, es obligatorio.
Unos pocos meses con NeoVim
Llevo ya unos pocos meses con NeoVim, pero, hasta la fecha, no había encontrado gran diferencia entre Vim y NeoVim. ¿Y porque estaba utilizando NeoVim?, por probarlo. Sin embargo, la aparición de NeoVim versiones 5.0 y 5.1 supusieron un cambio considerable. Y no ha sido hasta hace unos pocos días donde di el salto al vacío. Cambiando la configuración por completo de init.vim a init.Lua y por supuesto, haciéndola en Lua.
Lua
Si no lo conoces, algo que me sucedía a mi hasta hace recientemente poco, Lua es un lenguaje de programación, ligero, de alto nivel y multi paradigma, diseñado principalmente para ser utilizado como un lenguaje embebido en aplicaciones. Con lo que tiene todo el sentido su utilización.
Esto no quiere decir que me vaya a lanzar a aprender Lua. Por el momento no es mi objetivo ni a corto ni a largo plazo. Sin embargo, me resulta un lenguaje muy familiar, y me encuentro mucho mas cómodo, leyendo la configuración de NeoVim en Lua que haciéndolo en VimScript… Cada uno tenemos nuestras manías.
De hecho, a partir de la versión 0.5 de NeoVim, muchos complementos están siendo reescritos en Lua.
Treesitter
A partir de la versión 0.5, NeoVim puede hacer uso de Treesitter. Y ¿que es esto? Pues básicamente esto se traduce en un mejor resaltado de sintaxis.
Te tengo que confesar que yo no encuentro mucha diferencia entre el antes y el después, pero es algo que tenía que resaltar, porque el algo que mencionan a lo largo y ancho de Internet, cuando hacen referencia a esta versión 0.5. Supongo que con el paso del tiempo sabré apreciarlo, pero es lo que hay.
LSP integrado
Esta característica, es, sin lugar a dudas, la que hizo precipitar mi decisión en favor de NeoVim. LSP es el acrónimo de Language Server Protocol. Básicamente el motor de completado de código que está bajo el capó de Visual Studio Code.
En Vim, lo estuve utilizando con CoC (Conqueror of Completion), pero sinceramente, no me terminaba de convencer y lo terminé por desinstalar. De nuevo, supongo que por manías… pero que somos los seres humanos sino un conjunto de manías con brazos y piernas.
En el caso de NeoVim, LSP viene integrado, viene de caja. Aunque he instalado un par de complementos que me permiten aprovecharlo al máximo. El primero para configurar y el segundo para realizar el autocompletado. Y el funcionamiento es sinceramente excepcional.
Pero como decía anteriormente, no solo se trataba de tener un autocompletado, también necesitaba un analizar de código, y, esto es fácilmente de integrar con el LSP integrado. En mi caso estoy utilizando efm-langserver. Se trata de un LSP implementado en go y que va a las mil maravillas.
Telescope
¿Que es Telescope? Se trata de un buscador que te permite localizar determinados elementos haciendo uso de la técnica de lógica difusa. Para su funcionamiento requiere de NeoVim versión 0.5 o superior. Además de esto necesita de algunas dependencias externas. Puedes comprobar si está funcionando correctamente ejecutando checkhealth telescope
. Aquí es necesario dedicarle un tiempo para descubrir todas las opciones y el potencial que trae este complemento.
Gitsigns
Una herramienta fundamental para aquellos que trabajamos de forma habitual con el control de versiones. Esta herramienta te permite ver de forma completamente visual, todos los cambios producidos, así como diferente información sobre a que son debidos estos cambios.
Otro complementos totalmente personalizable y cargado de diferentes atajos de teclado para poder exprimir al máximo todo lo referente al control de versiones.
Galaxyline
Se trata de una barra de estado muy, pero que muy ligera y super rápida, tal y como la definen los propios desarrolladores de esta herramienta.
Conclusión
Tengo que confesarte que estoy disfrutando muchísimo de esta herramienta y en este sentido, te recomiendo que le des una oportunidad, sobre todo teniendo en cuenta que la puedes instalar utilizando AppImage, con lo que en caso de que no te se adapte a tus necesidades o a tu flujo de trabajo, simplemente es borrar.
Más información,
Imagen de portada de Markus Winkler
Hola Lorenzo, la verdad es que me siento muy identificado con lo que cuentas en el post. Ya no se vivir sin vim, o mejor dicho sin un editor modal. Me encuentro torpe con otras apps y sin emabargo cuando estoy editando texto o programando estoy como pez en el agua. Neovim ha supuesto una gran cambio respecto a vim, sobre todo por la posibilidad de hacer la configuración en Lua. Todo es más sencillo, además de las bondades que ofrece respecto a Vim. La verdad es que el equipo de desarrollo hizo un gran trabajo al reescribir casi la totalidad del código para poder ofrecer una nueva versión mucho más escalable.
En fin, seguimos disfrutando!
Muy productivo el tema, si podrías pasarnos la configuración que tienes, para probarla, seria buenísimo. Desde ya muchas gracias por tu aporte. Te sigo habitualmente
Muchísimas gracias a ti por comentar.
Un saludo Edgardo.
Como instalar efm es que me esta resultando un quebradero de cabeza