Lo viejo, lo bueno y lo nuevo en Neovim

Características

El editor Neovim se presenta como el sucesor del editor Vim.

  • El conector entre componentes de software, MessagePack de manera eficiente intercambia datos en binario y sirve para intercambiarlos en lenguajes tales como JSON.
  • Los plugins remotos son coprocesos que tienen un canal de comunicación por medio de RPC con el proceso de neovim. Estos plugins además se ejecutan de manera asíncrona, mejorando así el rendimiento.
  • Una configuración predeterminada más potente y amigable.

La configuración predeterminada incluye las siguientes funcionalidades:

  • Cuando se detecta que un archivo ha sido cambiado dentro de Vim, automáticamente lo lee de vuelta.
  • Permite borrar una autoindentación,  saltos de línea y al comienzo de inserción.
  • Ahora los directorios de backup están en ~/.local/share/nvim/backup siguiendo las directrices xdg [^1]
  • Resalta los resultados coincidentes de búsquedas
  • Realiza búsquedas incrementales
  • Muestra siempre la línea de estado
  • Ahora se pueden ver mejor las tabulaciones y espacios al final de cada línea
  • Muestr el comando que se está ejecutando
  • Manejo más inteligente de tabulaciones
  • Asume una terminal de conexión rápida
  • La campanilla está deshabilitada para todos los eventos
  • El directorio para temporales está en ~/.local/share/nvim/swap [^1].
  • El comando display muestra la última línea de los registros.
  • Justifica automáticamente usando el ancho del texto, inserción y borrado inteligente de caracteres de comentarios.

Configuración

  • En $HOME creamos un enlace:

lrwxrwxrwx 1 sergio sergio 19 nov 5 23:30 init.vim -> /home/sergio/.vimrc

  • Y también en $HOME/.config:

lrwxrwxrwx 1 sergio sergio 17 nov 5 23:30 nvim -> /home/sergio/.vim

  • En $HOME/.vimrc
if has('nvim') 
  Plug 'Shougo/deoplete.nvim', { 'do': ':UpdateRemotePlugins' } 
  Plug 'vim-airline/vim-airline' 
else 
  Plug 'Shougo/deoplete.nvim' 
  Plug 'roxma/nvim-yarp' 
  Plug 'roxma/vim-hug-neovim-rpc' 
  python3 from powerline.vim import setup as powerline_setup 
  python3 powerline_setup() 
  python3 del powerline_setup 
  set laststatus=2 
  set t_Co=256 
endif 
 
let g:deoplete#enable_at_startup = 1 
 
neoterm 
Plug 'kassio/neoterm' 
 
"call vundle#end()            " required 
call plug#end() 

Nuevas funcionalidades provenientes de plugins

Algunos de estos plugins son:

  • far.vim: Buscar y remplazar, abre un panel de vista previa.
  • deoplete.nvim: Autocompletar.
  • floobits: Etherpad usando neovim.
  • neoterm: Terminal embebida.
    neoterm
  • vim-pandoc: Integración con el conversor de lenguajes de marcas ligeros pandoc.

Conclusión

El editor VIM es una extraordinaria herramienta, no obstante adolece de disparidad en sus configuraciones predeterminadas, algunos inconvenientes de rendimiento e integración con otros componentes de software. Neovim viene a responder a estos inconvenientes y por ahora lo está haciendo muy bien. De hecho, VIM en su versión 8, incorporó muchas mejoras provenientes de Neovim. El tiempo dirá si los proyectos se terminan fusionando. Lo importante es que tenemos una alternativa moderna al casi treintañero VIM.

Notas

[ ^1 ]: Freedesktop.org

5 ejemplos: Usar la shell sin salir de vim

A veces estamos trabajando con un archivo y queremos ejecutar una serie de comandos, pero sin salir del editor. Veremos varias maneras de hacerlo.

1. El comando Ex shell (sh)

Este comando ((sh)ell)) sirve para abrir una shell sin cerrar el editor.

Importante: Para volver de la shell al editor se puede usar el atajo de teclado o Ctrl-d o bien el comando exit

2. Edición de archivos de la shell

Aquí estamos editando el archivo .bashrc, para que se apliquen los cambios podemos ir a la shell en modo login con:

:set shell=bash\ --login

3. Guardar e ir a la shell

En este ejemplo vemos como se puede aplicar los cambios en un servicio

:w | sh

Aquí la clave es el carácter “|” el cual sirve para ejecutar el comando (sh)ell luego de w.

4. Ejecución de bajo perfil

El comando silent ejecuta el comando de manera silenciosa y el comando redraw! limpia y actualiza la pantalla.

5. Ejecutar el archivo en edición

Al escribir un script en lugar de guardar, salir, ejecutar el script y volver a editarlo, podemos ejecutarlo directamente desde vim:

La clave en cuestión aquí es el carácter ‘%‘ que indica el buffer de la ventana actual.

Cosas sorprendentes con ViM

Sorpresa 1

Abrir directamente un archivo en un determinado número de  linea, por ejemplo: línea 247:

vim +247 /ruta/al/archivo

Sorpresa 2

Ejecutar un comando en modo Ex al abrir un archivo:

vim +:set nu /ruta/al/archivo

Sorpresa 3

Con Vim se puede volver al estado que tenía el archivo 10 minutos atrás con el comando en el comando en modo ex:

:earlier 10m

Por supuesto, se puede volver al futuro con:

:later 10m

¿Qué pasa si no se pone ‘m’? En eseo caso se retrocede o avanza la cantidad de ediciones especificada.

Sorpresa 4

Convertir un archivo en html en modo ex se hace así:

:TOhtml

El resultado se puede ver aquí es un ejemplo de un archivo Makefile.in convertido a HTML.

Sorpresa 5

Editar un archivo de manera remota:

vim ftp://remotehostname.com/myfile