Neovim, Instalación y Configuración Básica

Logo de Neovim

¿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.

sudo add-apt-repository ppa:neovim-ppa/unstable

Luego, hay que actualizar los paquetes e instalar Neovim.

sudo apt-get update
sudo apt-get install neovim

Fedora

Para instalar la última versión de Neovim en Fedora, ejecuta el siguiente comando.

sudo dnf install neovim

Comprobando la instalación

Para comprobar que todo ha salido bien, en la terminal ejecuta el comando nvim.

nvim

Nota

Si usaste la Appimage, debes ejecutar ./nvim.appimage sobre el directorio donde la descargaste.

Podrás ver la pantalla de bienvenida de Neovim.

Neovim en Ubuntu

Neovim en Ubuntu

Neovim en Fedora

Neovim en Fedora

Nota

Tal vez ahora mismo Neovim luzca aburrido, nada moderno ni con un gran diseño, pero al finalizar esta serie de posts tendrás un editor sin nada que envidiarle al resto.

Mi Neovim

Mi Neovim ahora

¿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:

sudo apt install xclip
sudo apt install xsel

Fedora:

sudo dnf install xclip
sudo dnf install xsel

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:

sudo apt install python3-pip
sudo apt install python-pip

Ahora ya puedes instalar las interfaces de Neovim.

Advertencia

Puede que necesites ejecutar estos comandos anteponiendo sudo.

python3 -m pip install neovim
python -m pip install neovim

Fedora

Las versiones actuales de Fedora sólo incluyen Python 3, así que si necesitas instalar Python 2, puedes hacerlo con:

sudo dnf install python

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).

Advertencia

Puede que necesites ejecutar estos comandos anteponiendo sudo.

python3 -m pip install neovim
python -m pip install neovim

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.

Advertencia

Puede que necesites ejecutar estos comandos anteponiendo sudo.

python3 -m pip install --upgrade neovim
python -m pip install --upgrade neovim

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.

sudo apt install ruby
sudo apt install ruby-dev

Ahora si podrás instalar la interfaz de Ruby.

Advertencia

Puede que necesites ejecutar estos comandos anteponiendo sudo.

gem install neovim

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.

Advertencia

Puede que necesites ejecutar estos comandos anteponiendo sudo.

gem install neovim

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.

nvim +checkhealth

Espera unos segundos a que Neovim haga las comprobaciones, si todo salió bien debe aparecer algo como esto:

resultado de correr checkhealth en Neovim

Resultado de correr checkhealth en Neovim

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.

Nota

Todo lo que aprendas en esta sección también es válido para 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.

Nota

Cada vez que sientas que te perdiste en un paso, presiona Esc al menos tres veces, así podrás regresar al modo normal y empezar de nuevo.

Abrir un archivo

Puedes abrir un archivo desde la terminal con:

nvim mi-archivo.txt

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 - izquierda
  • j - abajo
  • k - arriba
  • l - 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.

Nota

Puedes usar j y k para moverte en este blog.

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.

Advertencia

Tal vez te veas tentado a usar Ctrl + z, si lo hiciste y tu editor se cerró no te preocupes, sólo escribe fg en la terminal y tendrás de regreso tu editor.

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.

Nota

Mientra estás en el modo línea de comandos puedes usar Tab para autocompletar.

Nota

El comando :w es una abreviación de :write ¡pruébalo!

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:

nvim archivo-uno.txt archivo-dos.txt

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.

Nota

Los comandos :bn y :bp son una abreviación de :bnext y :bprevious.

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.

Nota

El comando :help puede ser abreviado como :h.

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

Nota

Si usas Vim, este archivo cumple la misma función que el archivo .vimrc.

Este archivo se localiza en ~/.config/nvim/init.vim, si no existe, créalo.

cd ~/.config/
mkdir nvim
touch nvim/init.vim

Abre el archivo y agrega la línea:

set number

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.

Nota

Es recomendable poner tu init.vim sobre un sistema de control de versiones, como git.

A continuación tienes un init.vim con algunas configuraciones mínimas.

Nota

Para que los cambios de set termguicolors tomen efecto debes volver a abrir Neovim.

Nota

Para ver todos los temas escribe :colorscheme da un espacio y luego usa Tab para iterar sobre estos.

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.

nnoremap <C-s> :w<CR>

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 la barra de menú

La barra de menú que ves es la de tú terminal, no la de Neovim.

Accede al menú Editar y selecciona Preferencias. En la pestaña General desmarca Mostrar la barra de menús en las terminales nuevas por omisión.

Ocultar la barra de menú de la terminal en Ubuntu

Ocultar la barra de menú de la terminal en Ubuntu

Advertencia

Tendrás de volver a abrir la terminal para ver los cambios.

Nota

Si quieres ver las opciones para configurar tu terminal, presiona Shift y luego da clic derecho sobre la terminal, o si prefieres hacerlo sin el mouse Shift + F10.

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.

Ocultar la barra de scroll de la terminal en Ubuntu

Ocultar la barra de scroll de la terminal en Ubuntu

Nota

Puedes moverte rápidamente hacia arriba o hacia abajo con Ctrl + u y Ctrl + d.

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.

Configurar el tipo y tamaño de letra de la terminal en Ubuntu

Configurar el tipo y tamaño de letra de la terminal en Ubuntu

Resultado final

Neovim final en Ubuntu

Neovim final en Ubuntu

Neovim final en Fedora

Neovim final en Fedora

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:

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.

Vídeo juegos

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.


[1] https://neovim.io/doc/user/nvim.html#nvim
[2] https://github.com/neovim/neovim/issues/2676
[3] https://neovim.io/doc/user/vim_diff.html#nvim-defaults
[4] https://neovim.io/doc/user/nvim_terminal_emulator.html
[5] https://github.com/neovim/neovim/pull/2198
[6] https://neovim.io/doc/user/api.html
[7] http://www.dictionary.com/browse/home-row
[8] El lugar donde se almacena lo que copias con Ctrl-c.
[9] http://joshldavis.com/2014/04/05/vim-tab-madness-buffers-vs-tabs/

Comments

Comments powered by Disqus