Vim Plugins: Mejorando nuestro editor favorito!

Publicado por Diego Córdoba en

En este artículo veremos cómo instalar algunos Vim plugins interesantes en nuestro querido editor de textos Vim, y que nos van a permitir mejorar nuestra productividad editando cualquier archivo de texto, incluido, por supuesto, nuestros códigos fuente si somos programadores.


vim Plugins, vim, editor, linux, programming, c code, code,

¿Quién ha dicho que Vim es un editor de textos pobre? «No uses Vi/Vim, es un editor difícil de manejar», etc.

Vim no es un editor «simple» de aprender al principio, pero una vez que le tomas el gusto, es un excelente editor de textos de línea de comandos, y puede mejorar tremendamente tu productividad editando archivos de configuración, o de código fuente si eres programador.

De más está decir que se trata de Vim, el «Vi IMproved«, o Vi Mejorado, no de la versión Vi clásica… por lo que si queremos utilizarlo deberemos instalarlo en la mayoría de las distros. Generalmente se encuentra en el repositorio, por lo que utilizando el gestor de paquetes de la distro no será un problema.

Vim Autocomplete: el auto-completado por defecto

Vim posee, por defecto, el autocompletado de texto teniendo en cuenta el texto que ya se encuentra escrito en el archivo que estamos editando, y también, si es código fuente, el texto escrito en archivos incluidos, como los #include de código C por ejemplo.

Esta característica puede activarse utilizando la combinación de teclas «Ctrl+n«, que abrirá una ventana popup donde tendremos las opciones a elegir según sea lo que estamos escribiendo.

Vundle: un genial administrador de plugins

Para poder instalar plugins de una forma simple en Vim vamos a necesitar un gestor de Plugins. Existen varios, pero en este post (y por las experiencias que tuve) opté por introducir a Vundle, una herramienta más que atractiva y fácil de utilizar para gestionar los plugins que necesitemos.

Es necesario saber que Vim gestiona un directorio y un archivo ocultos en el home de cada usuario. Puede que no existan, pero si existen, tendrán su efecto:

  • .vimrc: Archivo de configuración de opciones de Vim para el usuario.
  • .vim/ : Directorio donde se almacena información local de Vim para el usuario, incluidos los vim plugins.

Si bien Vim lee también el archivo /etc/vimrc, usualmente configuro vim local para mi usuario, o para cada usuario, de modo que cada quien agregue las configuraciones que le interesen. La sintaxis entre el /etc/vimrc y el .vimrc del home de un usuario es la misma, solo cambia el usuario al que se le aplican los cambios (en el primer caso, a todos los usuarios del sistema).

Veamos entonces cómo instalar Vundle en Vim

Los plugins generalmente se encuentran alojados en algún repositorio GIT, y Vundle no podía ser menos. Para instalarlo debemos simplemente clonarlo dentro de nuestro directorio .vim local de usuario:

git clone https://github.com/VundleVim/Vundle.vim.git ~/.vim/bundle/Vundle.vim

Luego de ejecutar este comando dispondremos del directorio «bundle» dentro del .vim/ de usuario.

Para poder configurar y agregar nuevos plugins, debemos agregar algunas líneas a nuestro ~/.vimrc. Si bien todo el bloque de configuraciones Vundle se puede agregar allí, personalmente como costumbre de orden en mis configuraciones, suelo agregar todas las líneas de gestión de plugins en un archivo llamado «plugins.vim» guardo dentro del directorio .vim/ de mi usuario, y luego sí, en el .vimrc lo referencio.

En fin, editamos nuestro .vimrc y agregamos esta línea al final:

so ~/.vim/plugins.vim

Y creamos el archivo «plugins.vim» dentro del ~/.vim de usuario, con el siguiente contenido:

set rtp+=~/.vim/bundle/Vundle.vim
call vundle#begin()
let g:clang_c_options = '-std=gnu11'
Plugin 'VundleVim/Vundle.vim'

" (*) Aqui agregamos las líneas <Plugin> para incorporar nuevos plugins a Vim

call vundle#end() " required
filetype plugin indent on " required

Donde he puesto la línea marcada con (*) es donde deberíamos agregar los vim plugins que quisiéramos instalar, y luego cargarlos en el Vim.

Instalando plugins: un ejemplo simple

Consideremos, por ejemplo, la instalación del plugin YouCompleteMe, un plugin que permite autocompletar código en la medida en que vamos escribiendo.

Es un plugin algo pesado (unos 235 MiB aprox.), por lo que deberemos esperar un poco a su descarga, pero nada que no valga la espera 🙂

Para ello, agregamos la siguiente línea a nuestro archivo plugins.vim:

Plugin 'Valloric/YouCompleteMe'

Luego ejecutamos por terminal el siguiente comando para instalar Vundle:

vim +PluginInstall +qall

O, alternativamente, podemos abrir el Vim y correr en modo ‘ex’:

:PluginInstall

La mayoría de los plugins con este último comando ya estarán perefectamente funcionales. Particularmente YouCompleteMe requiere un paso de compilación adicional dentro del directorio de sus fuentes:

cd ~/.vim/bundle/YouCompleteMe
python3 install.py --all

Este último comando requiere algunas dependencias que deberán ser instaladas previamente, aunque muchas distros GNU/Linux ya las proveen por defecto. En el caso de Debian:

apt install build-essential cmake vim python3-dev

Con este comando instalaremos el plugin YouCompleteMe en nuestro Vim, y podremos utilizarlo de inmediato!

vim Plugins, vim, editor, linux, programming, c code, code,

Algunos Vim plugins interesantes

En mi caso particular he probado varios plugins, incluidos YouCompleteMe, y por mis costumbres y trabajo como programador C, me he quedado con estos plugins en mi Vim:

Plugin 'MarcWeber/vim-addon-mw-utils'
Plugin 'tomtom/tlib_vim'
Plugin 'garbas/vim-snipmate'
Plugin 'honza/vim-snippets'
Plugin 'https://github.com/scrooloose/nerdtree'

Lo que me permite aumentar muchísimo mi productividad programando! Aquí un simple ejemplo de cómo crear un «hola mundo» documentado con Doxygen y separación en funciones 🙂

Cabe aclarar que no todos los plugins son compatibles entre si. Por ejemplo, el autocompletado de YouCompleteMe  no corre por defecto si cargamos los plugins de snippets mostrados arriba.

vim Plugins, vim, editor, linux, programming, c code, code,

Comandos de Vim Plugins

Dentro de nuestro Vim podemos ejecutar varios comandos relacionados con los Plugins.

Así como «:PluginInstall» instala los plugins que se encuentren en el archivo plugins.vim o .vimrc, el comando «:PluginClean» eliminará los plugins que estén instalados (o sea, cuyos archivos se encuentren dentro de «~/.vim/bundle/») y que no estén especificados en el plugins.vim.

Si ejecutamos «:PluginList» podremos ver los plugins instalados.

vim Plugins, vim, editor, linux, programming, c code, code,

Todos estos comandos pueden ser ejecutados directamente desde la línea de comandos utilizando el símbolo de suma «+». Por ejemplo, si queremos eliminar todos los plugins instalados, simplemente debemos borrar las líneas correspondientes en el archivo plugins.vim, y luego por terminal ejecutar:

vim +PluginClean +qall

Esto eliminará todos los archivos de plugin que se encuentren dentro de «~/.vim/bundle/«.

Luego, si los instalamos nuevamente, se descargarán desde los repositorios Git y se instalarán en dicho directorio.

La opción "+qall» equivale al comando ex «:qall«, es un «:q» para salir del editor sin tener que ir cerrando archivo por archivo 🙂

Un video vale mas que… ¿mil palabras?

Conclusiones: Vim Plugins

El formato de plugins que referenciamos en el archivo plugins.vim, como ser «honza/vim-snippets«, hace referencia a un usuario y proyecto alojado en github.com. Si Algún plugin que quisiéramos instalar no está en github, simplemente especificamos la ruta completa, o incluso, si lo está, también. Podríamos, por ejemplo, especificar lo siguiente:

Plugin 'http://github.com/vim-scripts/cpp.vim'

De mas está decir que las combinaciones de teclas y usos de cada vim plugin estará documentado en el sitio Git del plugin, ir a los README’s para tener más info.

Como tip adicional, en mi caso, cuando programo en C suelo colocar las llaves de apertura de funciones a la derecha de la función (no debajo)… y el plugin de autocompletado (vim-snippets en este caso) colocaba las llaves abajo. No fue difícil dar con el archivo de definición del plugin para mi lenguaje, y editarlo para que se comporte como yo quiero 😀

vim ~/.vim/bundle/vim-snippets/snippets/c.snippets

Finalmente, los invito a pasar por vimawesome.com o vim-scripts.org, sitios llenos de plugins para poder agregar a nuestro querido vim! Además en la red existe mucha información y comentarios sobre plugins que pueden interesarnos… es cuestión de buscar e instalar lo que nos haga la vida más fácil dentro de nuestro editor favorito 🙂

Les comparto también mi configuración de vim y plugins por si les sirve (aclaro, está súper desordenada! verán que pruebo muchas cosas tanto en vim como en neovim :P)

https://gitlab.com/d1cor/juncotic/-/tree/master/vim_config

Espero les sea de utilidad!

Si conocen algún plugin que les sirva, les pido que se tomen un par de minutos en comentar el artículo para sumar info a los nuevos visitantes! Gracias!


¿Preguntas? ¿Comentarios?

Si tenés dudas, o querés dejarnos tus comentarios y consultas, sumate al grupo de Telegram de la comunidad JuncoTIC!
¡Te esperamos!


Diego Córdoba

- Ingeniero en Informática - Mg. Teleinformática - Tesis pendiente - Docente universitario - Investigador