Vi es un editor de texto por modos, altamente personalizable y enfocado a la eficiencia de la edición. Hoy día lo más común es encontrarse con Vim (Vi Improved) en sistemas operativos basados en UNIX.

Este artículo estará enfocado a variantes más nuevas de Vi como lo son Vim y NeoVim (nvim) que es el que uso actualmente. Me estaré refiriendo al mismo intercambiando los términos.

NeoVim Así luce mi NeoVim mientras edito este artículo

Sencillo, pero potente

Vim es un editor de texto, así que eso es lo que hace mejor, editar texto. Sin embargo, implementa el sistema por modos que lo ha hecho tan famoso y a la vez distinto al momento de utilizarse.

Por defecto, al escribir no estás realmente escribiendo, sino que estás enviando comandos al editor; este es el modo normal.

Al mismo tiempo existen el modo Visual (para hacer selecciones), Ex(para ejecutar bloques de comandos) y el modo de comandos como tal, para los cuales estoy trabajando un video de explicación.

Unix como IDE

Un IDE es un entorno de desarrollo integrado, un conjunto de programas que se utilizan para diversas tareas durante la programación, depuración, pruebas; entre las cuales está incluído un editor de texto.

Ya que Vim es sólo el editor, hacen falta más herramientas para tener un flujo cómodo en la programación. Es aquí donde entra la filosofía de Unix como IDE (un artículo en inglés) que saca el máximo de las herramientas ofrecidas por sistemas basados en Unix para hacer el trabajo de un IDE.

En el artículo anterior se presentan algunas en esta lista, pero existen muchas más y varían dependiendo del lenguaje a utilizar.

  • Administración de archivos: ls, find, grep/ack, bash
  • Herramientas de edición: vim, awk, sort, column
  • Compilador: gcc, clang
  • Herramientas de build: make
  • Depuración: gdb, valgrind, ltrace
  • Control de versiones: svn, diff, git

Una vez comprendes la sinergía entre cada uno de estos comandos puedes utilizarlos inclusive para tareas más potentes que las que podría realizar tu IDE.

Acceso rápido a terminal

Y hablando de sinergía, es necesario poder acceder de forma rápida a todas estas herramientas, pero antes quiero hacer una observación.

Si tu idea es utilizar Vim sólo como un editor de texto y no necesariamente como parte de tu IDE, está bien utilizar GVim (modo gráfico).

Si por otro lado, lo que quieres es seguir la filosofía de Unix como IDE, mi recomendación es utilizar el Vim (basado en línea de comando).

Menciono esto porque estarás costantemente utilizando tu shell, para lo cual Vim trae una forma rápida de ejecutar los comandos que necesitas. Con sólo presionar :! y escribiendo el comando a ejecutar, se creará una tubería para jugar con los resultados que obtengas después de dicha ejecución.

Plugins

Los plugins son el factor balanceador en el uso de Vim, ellos complementan el funcionamiento de Vim al igual que sucede con los plugins de otros editores como Sublime Text o Atom. Dependiendo de la versión que utilices te verás forzado a usar VimScript o abrirte a otros lenguajes con el uso de NeoVim, para el desarrollo de plugins.

Una página en la que puedes encontrar todos estos plugins, clasificados por tipo es Vim Awesome. Para instalarlos se modifica el archivo de configuración de tu versión de Vi.

Recuerda que digo que es un factor balanceador pues Vim es bastante rápido, aún con plugins, pero debes siempre tener en cuenta que algún costo deben añadir. Ya sea durante la apertura del editor o mientras es utilizado. Mi recomendación, dejar este número al mínimo.

En comparación a la lista que tuve cuando utilizaba Atom, la cantidad de plugins en mi configuración es mínima; luciendo de esta forma.

Utilizo Plugged para administrar los plugins

Plug 'scrooloose/syntastic'
Plug 'ervandew/supertab'
Plug 'tomtom/tcomment_vim'
Plug 'ctrlpvim/ctrlp.vim'
Plug 'jiangmiao/auto-pairs'
Plug 'Valloric/YouCompleteMe', { 'do': './install.py' }
Plug 'airblade/vim-gitgutter'

Búsqueda rápida

También es fácil hacer búsqueda de palabras y saltar entre incidencias de las mismas. Con sólo escribir / y lo que se desee buscar, ya estás resaltando los resultados y navegando entre ellos con n.

Hasta para hacer reemplazos es sencillo, pues las expresiones regulares están a la orden del día. Basta con seleccionar el texto y con el comando s/Hola/hola/g, cambias todas las mayúsculas de 'Hola' a 'hola'.

Lo único rápido no es la búsqueda; como Vim trata las palabras, líneas y letras como objetos, es muy fácil navegar saltando entre cualquiera de estas. Inclusive es fácil trabajar con repeticiones de comandos.

Por ejemplo, escribir 35j te llevará 35 líneas más abajo. Aunque si escribes 35w, te moverás rápidamente 35 palabras más adelante. Simplemente sensacional una vez le agarras el truco.

Está en todas partes

Y finalmente uno de los puntos más pesados a favor de los administradores de sistemas es que Vi puede ser encontrado en prácticamente cualquier distribución basada en Unix, además de que siendo ejecutado dentro de una terminal se puede utilizar a través de conexiones SSH.

No más descargar el archivo, modificarlo con tu editor y subirlo. Sólo basta con correr Vi y tendrás un entorno similar en cualquier equipo al que te conectes.


Muchas gracias por haber leído este artículo y mantente pendiente, pues más adelante mostraré más a fondo cómo personalizar tu experiencia en Vi (NeoVim) y entraré en detalle de los plugins que utilizo.