Neovim, Instalación y Configuración Básica
¿Qué es Neovim?
Neovim es una refactorización del código de Vim, es un fork, no un clon de este [1]. Trae lo bueno de Vim con una mejor experiencia fuera de caja para el usuario.
¿Entonces qué es Vim? Vim es un editor de texto basado en modos (un lugar para escribir, otro para insertar comandos, y así). Nació como mejora de Vi (1976). Su interfaz no es gráfica, sino basada en texto (aunque existen varias implementaciones con interfaz gráfica, como gVim).
Neovim vs Vim
¿Qué realmente ofrece Neovim frente a Vim, además de tener un código más limpio?
Configuraciones por defecto, que hacen que puedas usarlo de manera inmediata. [2] [3]
Un emulador de terminal. [4]
Mejor integración con características de terminales modernos (estilo del cursor, truecolor [5]).
Una API que permite la comunicación con Neovim desde cualquier lenguaje de programación (de manera segura y asíncrona). [6]
Mejor integración con el mouse.
¿Por qué usar Neovim?
Antes de describir las ventajas de usar Neovim, debo aclarar que las mismas son válidas para Vim, ya que es un reemplazo directo de Vim. Si eres usuario de Vim, te recomiendo que pruebes Neovim.
Todo puede ser controlado con el teclado a través de comandos, puede parecer un poco complicado recordarlos (y al principio lo es), pero están organizados de una manera lógica, y con el tiempo se vuelven predecibles.
Facilita la edición de texto, permitiéndote automatizar tareas repetitivas, y las tareas tediosas las puedes lograr con un par de teclas. Con el tiempo, sentirás que el teclado es una extension más de tus manos.
Es altamente configurable, es como si construyeras tu propio editor, al final tendrás un editor hecho a tu medida, que cubre tus necesidades específicas.
Su comportamiento es expandible a través de plugins, si usas Vim, puedes seguir usando los mismos plugins de Vim, más los que la comunidad ha desarrollado para Neovim. Y si te animas, puedes crear tu propio plugin en tu lenguaje favorito (hace poco hice mi primer plugin en python).
Y por último, trae las mismas características que cualquier otro editor de código, como: auto completado, corrector ortográfico, pestañas, coloreado de sintaxis, búsqueda y reemplazo con expresiones regulares, etc.
Con todas las características mencionadas Neovim será el único editor que necesites para programar en cualquier lenguaje, o editar texto en general.
Instalación
Para la instalación de Neovim he usado dos máquinas virtuales:
Ubuntu 16.04.02
Fedora 25.1.3
Si usas otra distro que no sea Ubuntu ni Fedora o usas Windows, puedes seguir el proceso de instalación en la documentación oficial de Neovim.
Si no deseas instalar nada en tu sistema, puedes hacer uso de la Appimage
de Neovim.
curl -LO https://github.com/neovim/neovim/releases/download/nightly/nvim.appimage chmod u+x nvim.appimage
Ubuntu
Para tener la última versión hay que agregar la PPA de Neovim. Ejecuta el siguiente comando en la terminal.
Luego, hay que actualizar los paquetes e instalar Neovim.
Fedora
Para instalar la última versión de Neovim en Fedora, ejecuta el siguiente comando.
Comprobando la instalación
Para comprobar que todo ha salido bien,
en la terminal ejecuta el comando nvim
.
Podrás ver la pantalla de bienvenida de Neovim.
¿Y ahora qué?
Has abierto Neovim por primera vez, si no has usado Vim antes, puede que te estés haciendo algunas preguntas: ¿dónde están los menús? ¿cómo empiezo a escribir? o ¿cómo #@!?$# salgo?
Más adelante te mostraré todo esto,
por ahora lo que necesitas saber es que puedes moverte usando las teclas direccionales;
y para salir, presiona al menos tres veces la tecla Esc
,
luego presiona la tecla :
,
en la parte inferior aparecerá un pequeño espacio donde podrás ingresar texto,
ingresa q!
y luego presiona Enter
.
Instalando dependencias adicionales
Has instalado Neovim, pero aún hace falta instalar algunas dependencias (opcionales) para sacarle más provecho y no tener ningún problema al instalar plugins.
Proveedor de portapapeles
Para que Neovim pueda copiar o pegar desde el portapapeles [8] del sistema operativo, hay que instalar un proveedor.
Existen dos alternativas xclip
y xsel
, ambas muy buenas.
A continuación tienes los comandos para instalar alguna de ellas.
Ubuntu:
Fedora:
Interfaces de Python
Algunos plugins hacen uso de la interfaz de python que Neovim provee.
Se hará la instalación para las dos versiones de Python (2 y 3), aunque es seguro no instalar las interfaces de Python 2, porque todos los plugins que se instalarán usan Python 3.
Ubuntu
Ubuntu ya incluye ambas versiones de Python,
pero antes hay que instalar pip
(una herramienta para descargar y administrar librerías de Python).
Para ello ejecuta los siguientes comandos:
Ahora ya puedes instalar las interfaces de Neovim.
Fedora
Las versiones actuales de Fedora sólo incluyen Python 3, así que si necesitas instalar Python 2, puedes hacerlo con:
Ahora ya puedes instalar las interfaces de Neovim, aunque puede que Fedora ya lo haya hecho cuando instalaste Neovim (actualizar con los comandos de la siguiente sección si es el caso).
Manteniendo las interfaces de Python al día
Es recomendable que cada cierto tiempo actualices las interfaces de Python, así estarás al día con lo último que Neovim ofrece a través de su API.
Interfaces de Ruby
Al igual que algunos plugins hacen uso de la interfaz de Python, otros usan la interfaz de Ruby.
Ubuntu
Ubuntu no trae Ruby por defecto, instálalo con los siguientes comandos.
Ahora si podrás instalar la interfaz de Ruby.
Fedora
Fedora no trae Ruby por defecto, instálalo con los siguientes comandos.
sudo dnf install ruby sudo dnf install ruby-devel sudo dnf install gcc-c++ sudo dnf install redhat-rpm-config
Ahora si podrás instalar la interfaz de Ruby.
Comprobando las dependencias adicionales
Has instalado las dependencias adicionales para Neovim,
pero ¿cómo saber que todo salió bien?
Neovim trae una herramienta que permite comprobarlo, checkhealth
.
Para hacer uso de esta herramienta hay que iniciar Neovim con un parámetro algo especial.
Espera unos segundos a que Neovim haga las comprobaciones, si todo salió bien debe aparecer algo como esto:
Primeros pasos con Neovim
A continuación aprenderás lo básico para empezar a usar Neovim como un editor de código. Al principio parecerá que es contra-productivo, y que hay que teclear demasiado para realizar una simple acción; existen otras maneras más eficientes de hacerlo, pero el objetivo es que te sientas cómodo con la edición de texto antes de pasar a cosas más avanzadas. Al final del post encontrarás varios recursos para aprender más sobre Neovim/Vim.
Modos
Neovim tiene 3 modos principales:
Modo normal - Donde todas las teclas son interpretadas como comandos.
Modo insertar - Donde puedes escribir todo lo que teclees.
Modo visual - Donde puedes seleccionar bloques de texto.
Para entrar y salir de cada modo:
Para entrar al modo insertar, presiona
i
.Para salir del modo insertar, presiona
Esc
Para entrar al modo visual, presiona
v
.Para salir del modo visual, presiona
Esc
Cuando abres Neovim, el modo por defecto es el normal.
Abrir un archivo
Puedes abrir un archivo desde la terminal con:
Moviéndote por el editor
Antes había dicho que puedes usar las teclas direccionales para moverte, pero no es lo más eficiente cuando usas Neovim, las teclas direccionales están lejos de tu home row [7]. Puedes usar las siguientes teclas para moverte dentro del modo normal.
h
- izquierdaj
- abajok
- arribal
- derecha
También puedes usar w
y b
para moverte entre palabras.
Al principio va a ser duro no hacerlo con las teclas direccionales, intenta practicar hasta que te sientas cómodo, y no llegar a perder la cabeza o las teclas.
Escribir sobre un archivo
Para empezar a escribir debes ingresar al modo insertar con i
.
Observa como la forma del cursor ha cambiado,
ingresa algún texto y cuando termines presiona Esc
para volver al modo normal.
Guardar
En modo normal presiona :
, escribe w y presiona enter.
Salir
En modo normal presiona :
, luego escribe q
y presiona enter
(para salir sin guardar los cambios, debes escribir q!
).
Seleccionar texto
Presiona v
para entrar al modo visual,
mueve el cursor para realizar la selección.
Presiona Esc
para regresar al modo normal.
Copiar & pegar
Selecciona un texto usando el modo visual, luego presiona y
.
Presiona p
para pegar después del cursor o P
para pegar antes del cursor.
Para copiar una palabra,
en modo normal presiona yiw
o para copiar la línea actual presiona yy
.
Cortar
Selecciona un texto usando el modo visual, luego presiona d
.
Para cortar una palabra,
en modo normal presiona diw
o para cortar la línea actual presiona dd
.
Para pegar el texto cortado, presiona p
.
Copiar y pegar desde el portapapeles
Si intentaste pegar texto fuera de Neovim,
o pegar algo que habías copiado al portapapeles,
te habrás dado cuenta que no funciona.
Para usar el portapapeles debes copiar usando "+y
,
y para pegar desde el portapapeles "+p
.
Deshacer y rehacer
Para deshacer, en modo normal presiona u
;
y para rehacer Ctrl
+ r
.
Auto completado
Mientras estás en modo insertar,
escribe el inicio de una palabra y presiona Crtl
+ p
o Ctrl
+ n
para iterar sobre las sugerencias.
Modo línea de comandos
Neovim tiene otro modo, el modo línea de comandos.
Aparece debajo del editor donde puedes ingresar un comando,
luego de ejecutarlo (con Enter
) el editor retorna al modo normal.
¿Te suena familiar, no?,
¡ya lo has usado para guardar y salir!
Para ingresar a este modo teclea :
desde el modo normal.
De ahora en adelante cuando veas caracteres precedidos de :
sabrás que me refiero a que ejecutes un comando en el modo línea de comandos.
Por ejemplo para guardar :w
.
Trabajando con varios archivos
Para trabajar con varios archivos solemos usar pestañas, Neovim tiene pestañas,
pero no son exactamente lo mismo que en los demás editores [9],
en su lugar usaremos buffers
.
Podemos abrir varios archivos desde la terminal con:
O si ya tienes Neovim abierto,
puedes usar el comando :e <archivo>
,
por ejemplo :e archivo-uno.txt
.
Podrá parecer que no hay otro archivo abierto, pero lo hay.
Puedes listar todos los buffers con :ls
;
para cambiar al siguiente buffer usa :bnext
y para el anterior :bprevious
;
para cerrar el buffer actual :bdelete
.
Buscar
En modo normal presiona /
,
ingresa la palabra a buscar y presiona Enter
.
Muévete a la siguiente o anterior coincidencia con n
y N
.
Obteniendo ayuda
Para obtener ayuda puedes usar el comando :help [tema]
,
por ejemplo :help :w
para obtener ayuda sobre el comando :w
.
Aprendiendo desde Neovim
Neovim incluye un tutorial interactivo,
ejecuta el comando :Tutor
para empezarlo.
Configurando Neovim
Neovim puede ser configurado desde el modo línea de comandos,
prueba mostrando los números de las líneas ejecutando :set number
.
¿Quieres ver el nombre del archivo que estás editando en la ventana de la terminal? :set title
.
Si cierras Neovim, todas las configuraciones se perderán,
para mantenerlas se usa un archivo init.vim
,
el cual es cargado cada vez que se inicia Neovim.
init.vim
Este archivo se localiza en ~/.config/nvim/init.vim
, si no existe, créalo.
Abre el archivo y agrega la línea:
Para que los cambios tengan efecto debes volver a abrir Neovim,
o puedes ejecutar el commando :so ~/.config/nvim/init.vim
.
El archivo de configuraciones puede llegar a ser muy grande,
así que trata de documentar todo lo que pongas sobre este
(puedes agregar comentarios con "
),
y no copies y pegues cualquier configuración sin entenderla,
así tendrás un init.vim
ordenado.
A continuación tienes un init.vim
con algunas configuraciones mínimas.
Mappings
Se ha usado varios comandos para interactuar con Neovim, pero no parece ser tan productivo tener que escribirlos cada vez para cambiar de buffer o guardar un archivo.
Neovim nos permite definir nuestros propios atajos de teclado (mappings). Por
ejemplo, si quisiéramos usar Ctrl
+ s
para guardar,
bastaría con poner esta línea en el archivo init.vim.
A menudo verás combinaciones que usan <leader>
,
nos referiremos a esta como la tecla líder,
está reservada para atajos definidos por el usuario.
Por defecto la tecla líder es \
,
pero es un poco difícil de teclear,
por lo que se suele usar la tecla Espacio
o ,
como sustituto.
A continuación un par de mappings que te podrían ser de utilidad.
Configurando la terminal
¿Sientes que tu terminal no encaja del todo con Neovim?
Ocultar las barras de scroll
Cuando abres Neovim verás las barras de scroll horizontal y vertical de tu terminal, pero si intentas usarlas, podrás darte cuenta que no funcionan como esperas.
Abre el menú de opciones de tú terminal y ve a Perfiles
y a Preferencias del perfil
.
Dirígete a la pestaña Desplazamiento
y desmarca la opción Mostrar barra de desplazamiento
.
Tipo y tamaño de letra
Para cambiar el tipo y tamaño de la letra de Neovim, basta con cambiarla en la terminal.
Abre el menú de opciones de tú terminal y ve a Perfiles
y a Preferencias del perfil
.
En la pestaña General
marca Tipo de letra personalizado
,
y selecciona el tipo y tamaño de letra.
Resultado final
Alternativas
¿Te gustaron ciertas características de Neovim pero no te atreves a abandonar tu actual editor? Puedes hacerlo de manera progresiva o disfrutar varias de las características de Neovim sin usarlo de manera directa.
La mayoría de de editores e IDEs incluyen plugins para asemejarse a Vim/Neovim. Los que recomiendo son:
IntelliJ IDEA y derivados (pycharm, webstorm, android studio, etc) + IdeaVim
Conclusión y recomendaciones
Aprender a usar Neovim es duro, pasará algún tiempo hasta que te sientas cómodo, y para hacerlo, debes empezar desde ahora a usarlo.
No trates de memorizar todos los comandos que veas, apréndelos conforme los necesites.
No llenes tu init.vim
con configuraciones que no sabes lo que hacen,
ni copies totalmente las configuraciones de otras personas,
toma lo que vas a estar seguro que usarás.
Luego de aprender lo básico, el siguiente paso es empezar a usar plugins y a aprender desde la documentación oficial de Neovim.
Recursos adicionales
¿Interesado en aprender más? Neovim es un reemplazo directo de Vim, así que todo lo que aprendas para Vim podrás aplicarlo en Neovim.
Tutoriales online
Cheat Sheets
Vídeos
Libros
Vídeo juegos
Artículos
Dotfiles
Los dotfiles no son más que archivos de configuración
(que usualmente empiezan con un .
, de ahí su nombre).
En varios dotfiles podrás encontrar configuraciones para Vim/Neovim que podrían serte útiles.
Comentarios
Comments powered by Disqus