A pesar de su empinada curva de aprendizaje, el editor de texto Vim es la elección de varios de los desarrolladores en Easytech, por su poder, simpleza y customización.
Como lo usamos para casi todo tipo de edición, desde modificar un archivo de configuración hasta programar una aplicación, se nos ocurrió buscar maneras de personalizarlo para incrementar su potencial.
Resultó que Vim 7 ya trae consigo actualizaciones muy prácticas para programadores. Algunas otras las agregaremos a modo de Plugins, con una mínima configuración, como se detalla a continuación:
Auto Completado
Una de las herramientas incluídas en Vim 7 es la lista de autocompletado, que está activada de manera predeterminada, y se usa con el shortcut Ctrl+N mientras escribimos una palabra, en modo Insert. Esta herramienta intenta completar dicha palabra revisando el código del mismo archivo que estamos editando, e incluso revisa los archivos de nuestros includes o requires. Nos muestra una lista desplegable de la cual seleccionar la palabra que buscamos.
Auto Completado OmniFunc
OmniFunc funciona de manera muy similar al autocompletado mencionado anteriormente, pero trabaja distinto para cada lenguaje de programación. Revisa los archivos de sintáxis en $VIM/autoload y $VIM/syntax para el lenguaje detectado en el archivo editado, y muestra, por ejemplo, la lista completa de funciones de PHP. Para ver la lista desplegable, usamos el shortcut Ctrl+X seguido de Ctrl+O. Como en el autocompletado anterior, es preferible desplegar la lista cuando tenemos algunos caracteres de la palabra ya escritos, para reducir la cantidad de resultados y ganar velocidad.
Omnifunc no está activo de manera predeterminada, por lo que debemos activarlo con el siguiente comando:
setlocal omnifunc=syntaxcomplete#Complete
Esto puede agregarse en el archivo de configuración $HOME/.vimrc, para que se ejecute siempre que inicie Vim.
Smart Indent
Otro excelente agregado de Vim 7, Smart Indent, funciona similar al conocido auto-indent, pero una vez más, depende de la sintáxis del lenguaje que estamos usando. En vez de respetar la columna de tabulación anterior en cada enter, como el auto-indent, este reconoce estructuras básicas del lenguaje del archivo editado e indenta correctamente llaves, bloques, etc.
Para activarlo usamos el siguiente comando:
set smartindent
Otra vez, este comando puede agregarse al archivo de configuración $HOME/.vimrc para que esté siempre activo.
Tag List
Este es un plugin externo, que deberemos agregar a nuestro Vim. Basta con bajarlo de su sitio oficial ( vim-taglist.sourceforge.net ) y añadir el archivo taglist.vim en nuestro directorio $HOME/.vim/plugin.
Tag List nos abre una ventana lateral en nuestro Vim, con una lista de clases, variables, funciones, y demás, del archivo que estamos editando.
Podemos agregar el helpfile de TagList al Vim abriendo el editor desde el directorio $HOME/.vim/doc (donde deberíamos haber descargado el archivo taglist.txt) y corriendo el siguiente comando:
helptags .
podemos usar el siguiente comando o agregarlo a nuestro $HOME/.vimrc, para asignar la tecla F8 a activar y desactivar la TagList:
nnoremap <silent> <F8> :TlistToggle<CR>
Para alternar entre el archivo editado y la TagList, basta con usar el mismo shortcut para alternar entre split-windows: Ctrl+W seguido de la flecha de cursor hacia la split-window.
Una vez en la TagList, los shortcuts son los siguientes:
- las teclas “+” y “-” sobre un grupo lo expanden y contraen, respectivamente.
- Apretando la barra espaciadora sobre una función muestra su prototipo, y sobre una variable, su asignación.
- Apretando Enter sobre una variable o función, nos envía directamente a esa posición de nuestro archivo editado.
Para más información, podemos apretar F1 mientras la TagList tiene foco, o referirnos al manual.


Muy buen post. Muy util. Gracias
Jsto lo que andaba buscando, no sabes lo bien que me viene este post
Muchas gracias, uso Vim a diario, pero no sabía todo esto.
¿Por cierto, podrías completarlo con algunas cosas como hacer el ‘make’ o ejecutar la aplicación?
Gracias, saludos
Xavi: para ejecutar comandos desde el vim tenés que mapear alguna tecla con un comando. Como se ejecutan los comandos? con la combinación ‘:![comand]‘ donde [comando] es lo que querés ejecutar. Por ejemplo, para ejecutar un ls hacés:
:!ls
Ahora si querés que cuando apretás <f5> ejecute el comando ‘ls’ tenés que ‘mapear’ la tecla <f5> al comando con la siguiente secuencia:
:map <f5> :!ls<enter>
Esto dice: mapear la tecla <f5> y ejecutar :!ls y luego apretar <enter>. Para ejecutar un make es igual:
:map <f5> :!make<enter>
suerte!
Ah! gracias
uso muy a menudo el !ls o el !sort, pero nunca pensé en hacer un make directamente o mapearlo
Saludos
Very interesting article, i bookmarked your blog
Best regards
Este sitio tieme muchos tips utiles de vim: http://vim.wikia.com/wiki/Best_Vim_Tips