Saltar al contenido

Qué es Neovim y por qué

Qué es: un editor de texto que vive en el terminal y se maneja con el teclado. Qué no es: un IDE que funcione recién instalado. Las cinco razones honestas para usarlo, las tres para no usarlo, qué te compró exactamente el fork de Vim, y cuántas semanas cuesta la curva antes de que empiece a devolver.

Neovim es un editor de texto. Vive dentro del terminal, no tiene ventanas ni botones, se maneja entero con el teclado y se configura escribiendo código. Es gratis y libre. Eso es todo lo que es, y conviene decirlo así de plano porque el resto de esta guía son mil páginas y es fácil perder de vista que debajo hay un programa que abre ficheros y los deja escritos. La pregunta interesante no es qué es, sino por qué alguien elegiría esto teniendo un editor que ya funciona, con ratón, con menús y sin dos semanas de curva por delante.

  • Decir qué es Neovim y qué no es, sin usar la palabra «mejor».
  • Reconocer las cinco razones reales por las que la gente se queda, y cuál pesa más a largo plazo.
  • Reconocer las tres por las que otros lo dejan, para decidir con información.
  • Entender qué te compró a ti el fork de Vim, y qué parte viene de 1976.
  • Estimar la curva en semanas y elegir por qué nivel entrar.

Qué es

Un programa de unos pocos megabytes que arranca en el terminal, ocupa la pantalla entera y edita texto. No tiene interfaz gráfica propia. No tiene menús. Todo se hace con el teclado, incluido abrir ficheros, buscar, guardar y salir.

Se instala con el gestor de paquetes de tu sistema. Arranca en decenas de milisegundos. Funciona igual en tu portátil, dentro de un contenedor y en un servidor al que entras por SSH. Su configuración es un fichero de código Lua en ~/.config/nvim/ que puedes versionar en Git y llevarte a cualquier máquina.

Es software libre bajo licencia Apache 2.0, hecho por una comunidad. Nadie lo puede comprar, cerrar, meterle publicidad ni cambiarte el modelo de precios.

Qué no es

Definirlo por lo que no es ahorra la mitad de los malentendidos.

No es un IDE. Recién instalado no autocompleta tu código, no te dice dónde está definida una función, no formatea al guardar y no tiene depurador. Todo eso se puede tener —lo montarás en el Nivel 3— pero lo montas tú.

No es una aplicación de escritorio. No hay ventana que arrastrar ni preferencias que marcar con el ratón. Si algo se configura, se configura escribiendo.

No es «Vim pero bonito». Comparte con Vim la forma de editar, y se separó de él por motivos que verás más abajo. Pero la diferencia no es estética.

No es rápido de aprender. Es rápido de usar, que no es lo mismo. Las dos primeras semanas serás más lento que ahora, y esto lo dice cualquiera que sea honesto.

Por qué lo usarías

Cinco razones. Están ordenadas de la que se nota antes a la que pesa más al final.

1. Editas diciendo lo que quieres, no señalando dónde

Esta es la que engancha, y se ve en un ejemplo. Cursor en cualquier punto dentro del string:

JS
const saludo = "hola mundo, qué tal";

Quieres cambiar lo que hay entre las comillas.

ci" significa change inside quotes. Y lo importante no es que sean tres teclas: es que ni c ni i" sirven solo para esto.

Texto
ci"   cambia dentro de las comillasdi"   borra dentro de las comillasyi"   copia dentro de las comillasci(   cambia dentro de los paréntesiscip   cambia el párrafodi{   borra el bloque

Doce verbos y unos cuarenta complementos se combinan entre sí, y ninguna de las combinaciones se memoriza: se deducen. Aprender un complemento nuevo te da una capacidad nueva por cada verbo que ya conocías. Eso es lo que la gente quiere decir cuando dice que Vim «se compone»; la lección 0.4 lo desarrolla entero.

2. La edición ocupa la mayor parte de tu trabajo, y es la que peor está resuelta

Programar no es teclear. Es leer, navegar, renombrar, mover, borrar y reordenar, con ráfagas cortas de escritura entre medias. Un editor que optimiza el momento de escribir texto nuevo está optimizando la parte pequeña.

Neovim optimiza la otra: te reserva todas las letras del teclado para dar órdenes —eso es lo que significa que sea modal— y solo entras a escribir cuando de verdad vas a escribir.

3. Es tuyo, y se comporta igual en todas partes

Tu configuración es código, vive en un repositorio y se instala en una máquina nueva clonándola. No hay ajustes escondidos en una base de datos ni preferencias que se pierden al reinstalar.

Y va donde tú vas. El mismo editor, con la misma configuración, funciona en tu portátil, dentro de un contenedor, en una máquina remota por SSH y en un servidor sin entorno gráfico. Cuando estás depurando algo en producción a las tres de la mañana por una conexión lenta, no hay ninguna alternativa: ahí solo hay terminal.

4. No pesa y no te espera

Arranca en decenas de milisegundos, con lo que abrir un fichero suelto para cambiar una línea deja de tener coste. Come una fracción de la memoria de un editor basado en navegador. En ficheros grandes y en máquinas modestas la diferencia deja de ser una cifra y pasa a ser si el editor responde o no.

5. Lo que aprendes no caduca

Esta es la que más pesa a los cinco años. La forma de editar que vas a aprender es de 1976, está en el estándar POSIX, y por eso aparece en sitios donde nadie la puso a propósito:

less y man

j, k, /, n, gg, G. Cada vez que lees un manual o un log largo.

git

Su paginador es less. Un git log se recorre con las mismas teclas.

tu shell

set -o vi en bash, bindkey -v en zsh: la línea de comandos, modal.

tmux, k9s, lazygit

El modo copia de tmux y casi cualquier interfaz de terminal moderna.

El navegador

Vimium. Y GitHub, Gmail o Jira ya mueven sus listas con j y k.

Otros editores

VS Code, JetBrains, Zed y Obsidian traen modo Vim. Lo aprendido se va contigo.

Los atajos de tu editor actual son propiedad de quien lo hizo: si lo rediseñan, los reaprendes; si lo abandonan, los tiras. Esto sobrevivió a la desaparición del terminal para el que se inventó y a dos reescrituras completas del programa.

Por qué no lo usarías

Tres razones honestas. Si alguna te describe, mejor saberlo ahora que en la semana dos.

Vas a ser más lento durante dos semanas. Bastante más. No hay ninguna versión sincera de esta guía que diga otra cosa. Si estás en mitad de una entrega urgente, este no es el mes.

Tienes que montarte el IDE. Autocompletado, saltar a definiciones, formateo, depuración: todo existe y funciona bien, pero son piezas que eliges e instalas. Si lo que quieres es que funcione recién sacado de la caja, hay editores para eso —y en el Nivel 5 verás las distribuciones, que son justamente el atajo—.

La depuración visual sigue siendo mejor en un IDE grande. Se puede depurar desde Neovim y lo harás, pero si tu trabajo consiste en pasar el día dentro de un depurador con vistas de memoria y grafos de llamadas, ahí no vas a ganar.

Por qué «Neo» vim

Falta explicar el nombre, y es corto.

vi se escribió en 1976 y de ahí viene la forma de editar. Vim lo reimplementó y lo amplió en 1991, y durante treinta años fue el estándar. En 2014 un grupo de desarrolladores hizo un fork de Vim porque su código, crecido durante dos décadas bajo una sola persona, se había vuelto difícil de cambiar: no había forma de hacer nada en segundo plano sin congelar el editor, y añadir una interfaz nueva obligaba a tocar el núcleo.

Neovim reescribió esas tripas. A ti, como usuario, te compró cuatro cosas concretas:

Se configura en Lua

Un lenguaje de programación normal, en vez de Vimscript. Tu configuración es código que puedes leer.

Nada te congela el editor

Los plugins y los procesos externos corren aparte. En Vim, un plugin lento paraba todo.

Entiende código de serie

Trae el cliente de LSP y el motor Treesitter dentro. Lo que antes eran cinco plugins.

Se le pueden enchufar cosas

Interfaces gráficas, otros editores y scripts en cualquier lenguaje pueden hablar con él.

Esa última tiene más fondo del que parece

Cuando arrancas nvim no arrancas un programa: arrancas un servidor que contiene los buffers y la lógica de edición, y un cliente que dibuja caracteres en tu terminal. La documentación lo dice sin rodeos: todas las interfaces, incluida la de tu terminal, «son solo plugins que se conectan a un servidor Nvim».

Por eso existen interfaces gráficas hechas por terceros, por eso VS Code puede meter Neovim de verdad por dentro en lugar de imitarlo, y por eso un script en Python o en Rust puede abrir un fichero en tu sesión abierta. Hoy no necesitas nada de esto para editar; es el material de la segunda mitad del curso, del Nivel 7 en adelante.

Y una advertencia práctica, porque cuesta tiempo a mucha gente: Neovim no soporta Vim9script, el lenguaje que Vim introdujo en su versión 9. Si encuentras un plugin escrito en Vim9script, aquí no funciona. Se programa en Lua.

Lo que cuesta

Las dos primeras semanas vas a ser más lento. Le pasa a todo el mundo, incluida la gente que hoy no se plantearía volver. No es un fallo tuyo: es el precio fijo de un sistema que se compone en vez de enumerarse, y que por tanto exige aprender la ley antes de dar el primer resultado.

Al mes estás donde estabas, con la gramática empezando a salir sola.

A partir de ahí la curva no se aplana, porque cada pieza nueva multiplica lo que ya sabías en lugar de sumarse.

Cómo no abandonar en la semana dos

No intentes memorizar. Aprende la gramática —lección 0.4— y deja que lo demás se construya encima.

Y ten trabajo real de por medio. La memoria muscular no se forma con ejercicios: se forma editando código que te importa, equivocándote, y buscando la forma corta cuando algo se hace pesado. El nivel Sensei lo llama la regla de las tres veces: a la tercera vez que hagas algo incómodo, para y busca cómo se hace bien.

Nadie llega a nivel dios leyendo. Se llega editando mal durante dos semanas sin rendirse.

Por dónde entrar

Del 0 al 6 se puede saltar con criterio: si ya te mueves por Vim, el Nivel 1 es el editor a fondo, el 2 monta la config y el 3 el IDE. Del 7 en adelante van encadenados y conviene leerlos en orden, porque el 12 asume el 8 y el 21 asume casi todo lo anterior.

Y una ruta que mucha gente no ve: si lo que quieres es escribir un plugin, tu camino es 7 → 8 → 9 → 10 → 11 y luego saltar al 21. Los niveles 12 a 20 son profundidad, no requisito.

Ten a mano el Cheatsheet y la Config completa como referencia.

Antes de continuar

  1. Ejecuta nvim --version. Si es menor que 0.12, para: la lección siguiente lo instala.
  2. Abre less sobre cualquier fichero largo y prueba j, k, /palabra, n, G y gg. Funcionan todas. La forma de moverte que vas a aprender ya estaba en tu máquina.
  3. Si usas zsh, ejecuta bindkey -v y pulsa Esc en la línea de comandos. b, w, dw y ciw operan sobre lo que estabas escribiendo.
  4. Cronométrate: abre un fichero con tu editor de siempre, cambia el contenido de un string, y cuenta los pasos. Guarda el número. Repítelo dentro de un mes con ci".
  5. Responde en una frase, para ti mismo, por qué quieres hacer esto. Si la respuesta es «porque se ve bien en los vídeos», no vas a llegar a la semana tres; si es alguna de las cinco de arriba, sí.