Está en la página 1de 14

programacin

El editor Vim

Vim para
Programadores
Jorge Emanuel Capurro
Programas en varios lenguajes? Buscas un IDE que se adapte a tus necesidades?Quieres
unificar todas las caractersticas distintas de cada lenguaje en un solo programa que te sea
cmodo y eficiente de usar a la hora de programar? Si a todas estas preguntas todava no le
encontraste respuestas, este artculo te las va a dar. Esta vez, nos concentraremos en la forma de
usar, configurar y personalizar el magnifico editor de texto Vim de modo que podamos programar
en l bajo prcticamente cualquier lenguaje de programacin sin tener que envidiarle nada a los
grandes Entornos de Desarrollo Integrado (IDE). Veamos cmo hacerlo...

E
l editor vi es de uso obligado para cualquier Reconocimiento de formatos de fichero y conversin
linux@software.com.pl

Administrador de Sistemas, ya que es el ni- entre los mismos,


co editor de texto que viene preinstalado en Historial de comandos ejecutados,
prcticamente todos los sistemas UNIX. Esto Grabacin y reproduccin de macros,
ha sido as siempre y seguramente lo seguir siendo por Guardado de la configuracin entre sesiones,
mucho tiempo ms. Desde la llegada de su versin mejorada Plegado automtico y manual de cdigo,
llamada Vim (Vi Improved), este editor ha traspasado las Uso de plugins (extensiones).
barreras de ser solamente un simple editor de texto. Con
sus mejoras, se han incluido caractersticas que jams haban
Como vemos, muchas de estas prestaciones son muy ti-
sido pensadas que podran ser de suma utilidad para la gran
les para los programadores. Ente otra de las caractersticas
mayora de la gente que usa este editor a diario. Entre las
interesantes para mencionar, es la de poder utilizar el mo-
prestaciones que se incluyeron, stas son las principales:
do "editar, compilar, y corregir". De la misma forma que
los entornos de desarrollo integrados, Vim puede editar el
Autocompletado de texto, cdigo fuente adems llamar a un compilador externo,
Navegacin por Tags, e interpretar sus resultados. Muchos dicen que Vim es un
Ventanas mltiples, editor hecho por programadores para programadores
Resaltado de sintaxis dependiente del lenguaje de y evaluando todas sus caractersticas, no existen posibili-
programacin, dades en que estemos en desacuerdo con esta idea.
Comprensin de ms de 200 sintaxis diferentes, Como comentario adicional, Vim posee en sus ltimas
Completado de comandos, palabras y nombres de versiones la inclusin de la herramienta Vimdiff que fu-
ficheros, siona el viejo y poderoso comando diff de UNIX con las

38 Linux+ 9/2009
programacin
El editor Vim

Tip: Abreviando Texto con Vim


Por supuesto, Vim tiene un comando que
nos permite abreviar texto. Por ejemplo, si
quisiramos que cada vez que escribamos
la palabra Nombre nos apareciera Jorge
Emanuel Capurro, solamente tendramos
que tipear el siguiente comando :ab Nom-
bre Jorge Emanuel Capurro. til no?

macin si es que no recuerda algn comando.


Recuerde que Vim trae un muy buen tutorial
de iniciacin al uso del editor, llamado Vim-
Figura 1. Logotipo del Editor Vim
tutor. Puede invocarlo abriendo la terminal
ventajas de Vim para poder interpretar de una programador una tarea mucho ms fcil y lle- y tecleando Vimtutor es.
manera ms amena las diferencias entre dos vadera. En esta seccin tambin configura- Tambin es requisito fundamental el po-
ficheros. Muchas de las caractersticas men- remos a Vim lo suficiente como para tratarlo seer una conexin de internet, ya que necesi-
cionadas aprenderemos a utilizarlas y confi- como nuestro IDE universal. taremos descargar algunos plugins para poder
gurarlas, en el caso que sea necesario, en el Vale aclarar que la estructura del artculo aplicar lo visto en la seccin Avanzada del
desarrollo de este artculo. comprende y est pensada para ser utilizada artculo. De no poseerla, puede buscar alguna
como una gua de aprendizaje y referencia al fuente de conexin a internet, descargar los
Estructura mismo tiempo, siendo til en ambos casos. archivos necesarios, y luego seguir con el re-
La estructura del artculo se dividir en dos corrido del artculo.
partes, en funcin a la implementacin de las Prerrequisitos Todo lo aplicado en este artculo ha sido
caractersticas mencionadas. La divisin ser: Para poder seguir este artculo sin ninguna di- probado con el Vim - Vi IMproved 7.2, usan-
Bsica y Avanzada. En primer lugar, empeza- ficultad, se asume que el lector ya est fami- do el Sistema Operativo GNU/Linux Ubuntu
remos dando un bosquejo acerca de los co- liarizado con el uso de Vim. Es decir, que co- 9.04. Es vlido aclarar que todos los temas
mandos tiles para los programadores, cmo noce sus modos de funcionamiento y sus co- vistos aqu, pueden ser llevados sin ningn
implementarlos y en qu situacin. Entre los mandos bsicos. De igual modo, como el lec- cambio a los editores Vim que sean ejecuta-
temas a tratar estarn el coloreado de sintaxis, tor ha podido observar, se incluyen en el ar- dos en otras plataformas, como por ejemplo,
indentacin de cdigo automtica, trabajar con tculo tablas que indican las funcionalidades el editor Vim for Windows.
mltiples ficheros, etc. bsicas de Vim, que sirven a modo de recor-
Con respecto a la segunda parte del art- datorio, para que cuando quiera aplicar lo Prestaciones
culo, comprender el uso del editor Vim con aprendido en este artculo, pueda hacerlo sin Una vez realizada la introduccin y menciona-
plugins especficos que harn de la tarea del necesidad de recurrir a otras fuentes de infor- das todas las caractersticas de este magnfico

Jugando con Vim


Muchos dicen que al ser tan grande la
curva de aprendizaje de Vim, se vuelve
tedioso y aburrido de aprender. Es por
ello que existen algunos juegos para
Linux que pueden ayudarte a aprender
Vim. Estos juegos te ayudarn principal-
mente con lo bsico. Aunque no conozco
ningn juego que te ayude con todos los Figura 2. Una eterna batalla: Vim vs Emacs
comandos de vi, conozco algunos que
te ensearn a a moverte con el cursor
por el documento, entre otras cosas.
Uno de ellos es NetHack, un juego que
te ayudar concretamente a hacerlo, es
bastante completo y te puede entretener
y divertir durante mucho tiempo. Se pue-
de instalar empleando el comando sudo
apt-get install nethack-console.
Algunos otros son: rouge, moria, omega,
worm, y snake.
Figura 3. Comandos para la Apertura de Archivos

www.lpmagazine.org 39
programacin
El editor Vim

editor de texto, empecemos a aplicarlo a la tomticamente resalte las palabras reservadas te en un programa muy extensible a la hora
prctica. En un principio, como coment con segn sea su tipo, debemos aadir syntax on de escribir cdigo en distintos lenguajes, sin
anterioridad, veremos los comandos bsicos en el archivo de configuracin de Vim llamado tener que cambiar de herramienta.
aplicados a situaciones que nos ocurrirn .vimrc. Cmo configurar el archivo .vimrc lo
cuando estemos programando, como as tam- veremos en detalle en la seccin Configuran- Numerado de Lneas
bin, las configuraciones bsicas para que do el archivo .vimrc. El numerado de lneas en un archivo de cdi-
nuestro editor sea ms decente a la hora de Como todo buen programador sabe, el go fuente puede resultar muy til a la hora de
utilizarlo para programar. Comencemos! coloreado de sintaxis es una herramienta fun- depurar cdigo de errores y en general para
damental para el trabajo diario. Vim soporta mejorar la legibilidad de un programa. En
Parte 1 ms de 300 lenguajes de programacin para Vim podemos modificar muchos parmetros
Configuracin Bsica el resaltado de sintaxis, por lo que lo convier- del editor mientras editamos los ficheros. Por
Los temas a desarrollar en esta primera parte
del artculo sern los que figuran a continuacin:

Coloreado de Sintaxis,
Numerado de Lneas,
Indentacin Automtica y Manual,
Comandos Especficos para Programa-
dores,
Creacin de Marcas,
Autocompletado Manual,
Aplicar Folding al Cdigo,
Uso del Explorador de Archivos,
Trabajar con Mltiples Ficheros,
Compilacin desde Vim,
Ejecucin de Comandos de la shell.

Coloreado de Sintaxis
Figura 4. Comandos para las distintas Operaciones con Archivos
Desde la versin 5.0 (1998) Vim dispone de
coloreado de sintaxis. En las distribuciones
de Debian o derivadas como es Ubuntu, el
coloreado de sintaxis en el editor Vim no se in-
cluye. Por ms que la queramos incluir con los
comandos correspondientes, no surgir ningn
efecto. Estas distros traen un paquete de Vim
reducido en caractersticas y utilidades, esto
hace que afecte al tamao y que sea mucho
ms reducido, por ello si queremos un Vim con
color debemos desinstalar el Vim actual e ins-
talar vim-full como vemos a continuacin.
Primero desinstalamos el paquete corres-
pondiente:

# apt-get remove vim-tiny


Figura 5. Comandos para los Movimientos Bsicos dentro de Vim
Luego, instalamos Vim con todas sus pres-
taciones:

# apt-get install vim-full

Una vez instalada la versin full de Vim, sim-


plemente debemos indicarle que queremos ac-
tivar el resaltado de sintaxis. Esto lo haremos
mediante el comando :syntax on. Una vez
activado el resaltado de sintaxis, ste estar
habilitado por la sesin de Vim que tengamos
en el momento. Si queremos que cada vez que
abramos Vim con un archivo especfico, au- Figura 6. Comandos para la Insercin de Texto

40 Linux+ 9/2009
programacin
El editor Vim

<< y >>. Estos comandos se encargan de mando gg=G. Este comando nos situar en la
tabular nuestro cdigo, dependiendo de la primer lnea del archivo (gg), luego indentar
configuracin de la opcin ShiftWidth. Por todo el archivo (=) hasta el final (G), algo que
ejemplo, si nuestro ShiftWidth est seteado en sin duda es de suma utilidad. Otras formas
10, cuando apliquemos el comando << o >> se de utilizar este comando para indentar partes
nos indentar la lnea actual hacia la derecha especficas de cdigo es:
o la izquierda, respectivamente. Para cambiar
el valor de ShiftWidth, invocamos al seteador =iB Tabula el bloque de cdigo entre
mediante :set shiftwidth=X , donde X es {y} pero no estos caracteres.
el valor de la tabulacin, que por lo general, =aB Tabula el bloque de cdigo entre
es tres. {y} incluyendo estos caracteres.
Otro comando interesante es el comando =ib Tabula el bloque de cdigo entre
Tabla 1. Comandos de desplazamiento tiles para
=. Este comando nos indentar la lnea actual, (y) pero no estos caracteres.
programar
si sta no fue indentada. Es muy til ya que =ab Tabula el bloque de cdigo entre
ejemplo tecleando el comando :set number permite el uso de counts o repetidores. Por (y) incluyendo estos caracteres.
todas las lneas del fichero del lado izquierdo ejemplo, si queremos asegurarnos que la
estarn numeradas y dicha numeracin apare- totalidad de nuestro cdigo est indentado Por ultimo, en el tema de indentado, podemos
cer en pantalla. Si queremos desactivar esta correctamente, simplemente llamamos al co- recurrir a una poderosa y vieja herramienta de
opcin, simplemente tecleamos el comando :
set nonumber. Esta funcin bsica pero po-
tente es algo que sin duda puede ser til para
programar.

Indentacin Automtica y Manual


Existen varias formas distintas que Vim nos
propone a la hora de indentar cdigo. En
principio, abordaremos las tcnicas autom-
ticas, mostrando sus diferencias entre s. Lue-
go, veremos cmo arreglar la indentacin de
forma manual.
Figura 7. Comandos de Copiado, Pegado, Borrado, Bsqueda y Reemplazo de texto
Las principales formas de automatizar el
proceso de indentacin de cdigo son median-
te tres comandos, dos de ellos internos de Vim
(:set smartindent y : set autoindent)
y uno externo, que es una utilidad que nos
provee la shell, llamada indent. A modo de
aclaracin, esta ltima utilidad puede instalar-
se mediante el comando sudo apt-get ins-
tall indent. El comando smartindent es una
versin mejorada del comando autoindent, en
donde el primero tiene la capacidad de reco-
nocer de manera inteligente las estructuras del
lenguaje que estemos utilizando y as aplicar
la indentacin en llaves, bloques, etc., segn
corresponda, siempre y cuando tengamos el
archivo de configuracin de indentacin para
ese lenguaje. Esto lo podemos chequear ubi-
cndonos en el directorio /usr/share/Vim**/
indent (El ** debe ser reemplazado por la
Figura 8. Ejemplo del uso de Coloreado de Sintaxis, Numerado de Lneas, Indentacin y Autocomple-
versin de Vim que estemos utilizando sin el
tado manual
punto separador. En mi caso, es la versin 7.2,
es por eso que la ruta quedara as /usr/share/
Vim72/indent). De no poseer el archivo de
indentacin, podemos descargarlo de internet
en la pgina oficial de Vim, en la seccin de
Scripts: http://www.vim.org/scripts/index.php.
Con respecto a la indentacin manual,
podemos mencionar el uso de los comandos Figura 9. Marcas para poder plegar el texto

www.lpmagazine.org 41
programacin
El editor Vim

la variable i, cuando presionemos el comando


gd nos podr llevar hasta la lnea que dice, por
ejemplo, int i;. Es incalculable la comodidad
de usar este comando en las tareas diarias.
El comando % resulta muy cmodo tam-
bin. ste, situado sobre un delimitador de blo-
que, nos mueve a su pareja. O sea, si estamos
sobre el { nos lleva al } y viceversa. Tambin
se puede utilizar para encontrar las parejas de
#if, #ifdef, #else #elif and #endif, por
ejemplo.
Otro comando que vale la pena mencionar
es el comando '. (comilla simple y punto) que
Figura 10. Texto plegado mediante el mtodo marker nos permitir posicionarnos en el lugar en que
estbamos la ltima vez que editamos este fi-
chero. Muy til a la hora de corregir errores.
Por ltimo, el comando <NUMERO>G posi-
cionar el cursor en la lnea nmero NUMERO del
documento. Por ejemplo, 100G nos llevara
a la lnea nmero 100. Es especialmente til
a la hora de programar, cuando tenemos que ir
a lneas concretas del programa donde el com-
pilador nos ha reportado errores.
Una caracterstica muy interesante inclui-
da en las ultimas versiones de Vim, es la del
uso de identificadores. La desventaja de usar
los comandos gd y gD es que stos no tienen la
Figura 11. Uso del Explorador de Archivos :Vex. A la izquierda, el explorador de archivos, a la derecha,
posibilidad de buscar en ficheros de inclusin,
un cdigo fuente
solamente buscan declaraciones de variables,
UNIX: la herramienta indent. Este utilitario tra Vim, es decir, no son comandos del tipos estructuras, etc., sobre el fichero actual. Los
sirve, como su nombre lo indica, para corregir "seters" (tcnicamente llamados comandos ex, identificadores fueron creados para corregir esa
indentaciones de cdigos fuente. Solamente, en referencia al viejo editor de texto), como problemtica. Para hacer uso de ellos, simple-
para su uso desde Vim, la invocamos me- los que estuvimos viendo hasta el momento. mente nos posicionamos sobre una palabra,
diante el comando :!indent %. De no tener Todos estos comandos tienen mltiples usos, y mediante la combinacin de teclas [I se nos
instalada la herramienta, lo podemos hacer pero daremos ejemplos en donde aplicados al aparecer una lista de todos los identifica-
mediante sudo apt-get install indent. entorno de la programacin, resultarn de suma dores encontrados en el archivo actual y los
Tambin existe un seteo de indentacin espe- utilidad. La mayora de los comandos tratan so- incluidos junto con el nombre del archivo y el
cfico para el lenguaje C. Este seteo se activa bre el desplazamiento eficiente y rpido sobre nmero de linea de la definicin.
mediante el comando :set cindent y puede el cdigo fuente en Vim.
desactivarse con :set nocindent. La Tabla 1 resume los comandos de mo- Creacin de Marcas
vimiento que nos sern de mucha utilidad una El comando 'm' es el utilizado para crear marcas
Comandos Especficos vez que los tengamos bien incorporados. Por en nuestros archivos. Pero primero, qu es una
para Programadores ejemplo, en referencia a la Tabla 1, si utiliza- marca? La respuesta es simple. Una marca sir-
En esta seccin, se mostrar una recopilacin de mos el comando [{d}] dentro de un bucle whi-
comandos tiles para los programadores. Estos le, lo borraremos por completo, sin necesidad
comandos se aplican en base al texto que mues- de fijarnos donde comienza y termina el bucle Tip: Utilizar sudo dentro
Demasiado rpido no? Combinaciones de de Vim para dar permisos
este tipo son muy utilizadas y se vuelven casi de escritura
Tip: Ver Archivo en automticas con la prctica.
Muchas veces sucede que abrimos un
Hexadecimal Dos desplazamientos rpidos que incluye
fichero con Vim y lo editamos, y cuando
Vim pura y exclusivamente para los programa-
Si queremos visualizar nuestro archivo queremos guardarlo, nos damos cuenta
dores, son los comandos gD y gd. El primero,
en hexadecimal, podramos hacerlo bien que no tenemos permisos de escritura
cuando estamos situados en el nombre de una
saliendo de Vim y ejecutando la podero- sobre l. Qu hacer en esa situacin?
variable, nos lleva a la declaracin global de
sa herramienta od. Pero si deseamos ver Para no tener que descartar las modifi-
la misma. El segundo, funciona de la misma
y modificar nuestro archivo en hexade- caciones realizadas, nos remitimos a in-
forma, solamente que nos lleva a la declaracin
cimal sin salir de Vim, podemos hacerlo troducir el comando :w !sudo tee % y lis-
local. Por ejemplo, si tenemos una porcin de
mediante un simple comando: :%!xxd. to, problema solucionado.
cdigo que es i=10, y nos posicionamos sobre

42 Linux+ 9/2009
programacin
El editor Vim

ve para poder volver a una lnea (determinada Por ejemplo, supongamos que en una parte podra desplegar funcion1(), funcion2(),
por la marca) en cualquier momento de manera de nuestro cdigo aparece funcion1(). Ms funcion_bsearch(), etc.).
rpida mediante una combinacin de teclas. adelante, para poder autocompletar la instruc- En la Figura 8, podemos ver un ejemplo de
Esto es muy til, por ejemplo, cuando estamos cin, tendramos que escribir una parte de la implementacin de la funcin estndar de bs-
programando y necesitamos con frecuencia palabra a autocompletar y presionar alguna de queda binaria bsearch en C, en la cual estamos
volver a una determinada funcin. En vez de las combinaciones de teclas que se describen utilizando Vim con las caractersticas de nume-
ir buscando la funcin cada vez que queramos anteriormente. Por ejemplo, podramos poner rado de lnea, resaltado de sintaxis, indentacin
acceder a su cdigo, simplemente le asignamos "func" (sin comillas) y luego presionar Ctrol y autocompletado manual de sentencias. Nte-
una marca y volveremos a ella de manera r- + P. Se nos desplegar un listado debajo de la se en el ejemplo cmo en el autocompletado
pida. palabra a completar con todas las posibles coin- aparecen como posibles coincidencias, tanto
Las marcas se guardan en buffers, desde cidencias, si es que las hubiera (por ejemplo, se las funciones del lenguaje (printf, pathname,
[a-z], [A-Z] y [0-9]. Para crear una marca,
simplemente presionamos la combinacin de
teclas mx, siendo x el nombre del buffer en
donde se guardar la marca. Para acceder a una
marca, debemos presionar 'x , siendo x el
nombre del buffer asignado. Es decir, ma sera
una marca a la que se vuelve pulsando 'a. Es
importante que el buffer de marcas se vaca una
vez cerrado el archivo.
Una marca interna de Vim que es muy
til es la marca gd. Esta marca tiene como
caracterstica que al poner el cursor encima de
una variable podemos ir directamente a la lnea
donde se declar. Si la variable est declarada Figura 12. Uso de Tabs para editar mltiples ficheros simultneamente
como local y global, podremos ir a la declara-
cin como global pulsando gD.

Autocompletado Manual
Aparte del autocompletado de sentencias au-
tomtico que posee Vim agregndole plugins,
tambin posee un sistema de autocompletado
que viene incorporado en la configuracin de
Vim por defecto. Esta funcionalidad es la que
veremos ahora, dejando los plugins especficos
para ms adelante. El autocompletado no sola-
mente sirve para los programadores, sino que
se aplica tambin a cualquier archivo de texto
en el que queramos autocompletar alguna pala-
bra. Este mecanismo que Vim trae incorporado
funciona bsicamente indexando las palabras Figura 13. Uso de Split para editar mltiples ficheros simultneamente
que vayamos escribiendo en el archivo actual
y en los que hayamos incluido (en el caso del
lenguaje C por ejemplo, los archivos que estn
referenciados en la directiva #include) para
que, cuando queramos autocompletarla, la bus-
que de manera rpida y nos arroje los posibles
resultados. El autocompletado de Vim se activa
mediante la siguiente combinacin de teclas:

Ctrol + N: Busca las concordancias en


el fichero desde la posicin actual hacia
adelante (si se llega al final, se sigue bus-
cando desde el principio).
Ctrol + P: Busca las concordancias en el
fichero desde la posicin actual hacia atrs
(si se llega al principio, se sigue buscando
desde el final hacia atrs). Figura 14. Uso de QuickFix

www.lpmagazine.org 43
programacin
El editor Vim

Tabla 2. Listado de algunos de los ms famosos plugins que Vim ofrece a la hora de programar mtodos de plegado. Simplemente tipee :
Comando Descripcion/Accion h foldmethod

[{ Ir al { que abre el bloque de llaves


}]
Uso del Explorador de Archivos
Ir al } que cierra el bloque de llaves
Entre otras de las caractersticas a destacar
[( Ir al ( que abre el bloque de parntesis
de Vim, es la inclusin de un explorador
)] Ir al ) que cierra el bloque de parntesis de ficheros/directorios propio. El mismo se
[* Ir al /* que abre el comentario del tipo /**/ llama con los comandos :Vex y :Sex (o bien,
*] Ir al */ que cierra el comentario del tipo /**/ de la forma larga :Vexplore y :Explore res-
pectivamente). Las diferencias de estos dos
etc.) como tambin los identificadores propios aplicar, pero a veces se vuelve incmodo, ya comandos es en qu forma abrirn el nuevo
del programa, como en este caso, la variable que en ciertas ocasiones que el editor pliegue archivo, es decir, si lo harn dividiendo la
pItem, algo realmente muy til. un if de dos lneas crea ms problemas de lo pantalla en forma vertical u horizontal (ver
Tambin podemos autocompletar nom- que ayuda. apartado siguiente Trabajar con Mltiples
bres de archivos o directorios donde se en- Con respecto al mtodo syntax, debemos Ficheros). En el caso de :Vex, lo hace de for-
cuentre nuestro fichero a editar, presionando setear los delimitadores que queramos que se ma vertical, y :Sex de forma horizontal. En
la combinacin de teclas Ctrol + X + F. Por usen para plegar el cdigo Por ejemplo, cuan- la Figura 11, vemos el uso de :Vex para explo-
ltimo, una funcionalidad muy interesante es do programamos en C, nos puede resultar til rar un rbol de directorios determinado.
la que se logra presionando las teclas Ctrol la siguiente expresin de configuracin: En la parte superior del explorador de
+ X + O, la cual mostrar una lista de las ficheros, podemos cambiarle el orden en
funciones que puedan coincidir en el auto- :syntax region myFold start { end que queremos que nos muestre los archivos,
completado, adems de una ventana superior } trasparent fold como tambin renombrarlos, eliminarlos,
especificando diversa informacin como la :set foldmethod=syntax etc. Si no queremos que el explorador de
librera donde se encuentra, su prototipo, etc. archivos se abra en una divisin aparte, pode-
ya que provocar que se pliegue el cdigo se- mos usar el comando :edit . el cual abrir al
Aplicar Folding al Cdigo gn las llaves que se encuentren en el archivo, explorador de archivos con ruta principal en
El plegado (o folding) de cdigo fuente que se encargan de delimitar los bloques de el directorio actual (.).
le da al programador la posibilidad de con- las estructuras del lenguaje. Vale aclarar que existen plugins espe-
centrarse en las partes del cdigo que real- Por ltimo, el mtodo ms eficiente a mi cficos que realizan la misma tarea, pero de
mente quiere analizar o modificar, ofrecin- parecer, es utilizar plegado mediante marker. manera (tal vez) ms eficiente. El uso de
dole un ambiente de trabajo mucho ms En primer lugar, tendremos que establecer estos plugins lo veremos en la segunda parte
ordenado. Cuando pleguemos cdigo, ste una marca que se encargar de delimitar el del artculo.
se reducir a una sola lnea informando la texto a plegar. Estas marcas son {{{ para la
cantidad de lneas ocultas y mostrando la marca de comienzo, y }}} para delimitar el fin Trabajar con Mltiples Ficheros
primer lnea del contenido del pliegue. de la zona de pliegue. En la Figura 9 podemos Anteriormente, el editor vi no traa soporte
De esta caracterstica no escapa Vim, y es ver esta accin. Luego, seteamos el mtodo para el trabajo con mltiples ficheros. Podra-
por ello que nos ofrece distintos mtodos de de plegado con :set foldmethod=marker y por mos llegar a resolver este problema usando
plegado automtico como manual, indent, ltimo nos queda manipular los pliegues con GNU Screen, pero no era de lo ms recomen-
expr, marker, syntax y diff. Entre los que se los comandos correspondientes. La siguiente dable, ya que haba que saber hacer uso de
destacan por ser usados con ms popularidad, lista de comandos es universal para cualquier una aplicacin externa.
los tres siguientes: mtodo de pliegue: El trabajo con mltiples ficheros en el
editor vi tiene una historia anecdtica. Una de
zo: Abre el pliegue bajo el cursor,
indent: Utiliza los niveles de indenta- zc: Cierra el pliegue bajo el cursor,
dos configurados para determinar qu za: Cierra el pliegue si est abierto y lo Tip: Explorando archivos
lneas indentar. abre si est cerrado, con Wildmenu
syntax: Utiliza una inteligencia similar zR: Abre todos los pliegues,
Wildmenu es una caracterstica simple
a la del resaltado de sintaxis a la hora de zM: Cierra todos los pliegues,
e interesante de Vim. Nos permite na-
plegar las lneas. zj: Mueve el cursor al pliegue siguiente,
vegar por el sistema de archivos donde
marker: Realiza el plegado de cdigo zk: Mueve el cursor al pliegue anterior,
estemos parados, de manera rpida
en base a una marca predefinida por el zd: Elimina el pliegue que se encuentra
y sencilla. Por ejemplo, si queremos edi-
usuario. debajo del cursor,
tar un archivo utilizamos el comando :e. Si
zE: Elimina todos los pliegues del archivo.
luego de esto, presionamos la combina-
Para activar el mtodo de plegado mediante
cin de teclas CTRL + D, wildmenu apa-
indent, invocamos al comando :set fold La Figura 10 muestra como queda el ple-
recer, dejndonos navegar por nuestro
method=indent y veremos cmo se pliegan gado el texto, segn la marca definida ante-
file system en busca del archivo re-
todas nuestras lneas, segn el indentado riormente. Puede consultar la ayuda de Vim
querido.
que tengan. Este mtodo resulta sencillo de si quiere ver cmo se utilizan los dems

44 Linux+ 9/2009
programacin
El editor Vim

las historias ms antiguas y preferidas sobre Tabla 3. Comandos para insertar estructuras con Bash-Support
vi es que aparentemente Bill Joy (creador Plugin Descripcion
y programador de Vi) estaba trabajando sobre NERD tree NERD tree es un plugins que nos brindara un arbol de directorio mucho mas
una versin multiventanas de vi, pero el cdi- flexible y com mas opciones que :Vex
go fuente se perdi, y por eso vi nunca lleg a
Nerd Commenter Un plugin que permitecomentar de cdigo de manera facilpara muchos (casi
desarrollarse con aplicaciones multiventanas
todos) los archivos.
hasta la aparicin de las versiones modernas,
VCS Command Este plugins nos permitira manipular archivos controlados por CVS, SVN,
como es Vim. En palabras de Joy, citadas
GIT y en SVK , incluyendo la posibilidad de realizar los cambios y diferencias
en una entrevista aparecida en el nmero de
mediante la herramienta vimdiff.
agosto de 1984 de la revista Unix Review,
dice lo siguiente acerca de este hecho: "...lo SQLComplete Este plugin incluye las declaraciones, las funciones, las palabras clave, los
que ocurri realmente fue que estaba en operadores, ect de SQL. Incluye 9 ficheros diferentes de sintaxis de SQL
pleno proceso de desarrollo para aadir mul- (Oracle, Informix, MySQL, etc). Puede elegir diferentes variaciones SQL
tiventanas a Vi y entonces instalamos nuestro usando el comando (: h sql-dialects):
VAX, all por diciembre de 1978. No haba- Align Este plugin permite alinear codigo de acuerdo con una lista de caracteres
mos hecho copias de respaldo y la unidad de predefinidos. Muy util a la hora de querer dejar el codigo prolijo
cinta fall. Segu trabajando a pesar de no Doxygen-Support Este plugin permite comentar codigo siguiendo las normas para poder crear
poder hacer copias de seguridad. Entonces el documentacion de manera automatica mediante la potente herramienta
cdigo fuente se corrompi y no tena hecha doxygen. Muy recomedable.
copia del listado. Casi haba rehecho todo el Xdebug Este plugin nos permitir conectarnos al modulo XDebug de
cdigo de visualizacin de las ventanas, y eso PHP , podremos poner Breakpoints, ver el contenido de las
fue lo que me hizo desistir. Despus de aque- variables en un momento dado.
llo, recuper la versin anterior y me limit Check Syntax Este plugin permitira que cada vez que guardemos un archivo PHP
a documentar el cdigo, terminar el manual o cliquemos la tecla F5 se ejecutar la comprobacin de la sintaxis PHP,
y archivarlo definitivamente. Si no se hubiera indicndonos los errores si los hubiera.
fastidiado ese cdigo, Vi tendra mltiples
DBExt Con este plugin podremos conectarnos a varias BBDD
ventanas, y le hubiera aadido algn tipo de
y hacer consultas. La configuracin de la conexin se puede hacer
programabilidad... quin sabe....
al momento o tener un pool de conexiones en nuestro .vimrc
Por suerte, la gente de Vim resolvi el
FindMate Este plugin nos permite tener un buscador de archivos dentro del rbol
problema que Bill habra querido resolver
de directorios.
all por los aos '70. Este problema fue sub-
sanado aadiendo a Vim dos funcionalidades SQLUtils Este plugin nos permite darle un formato a nuestra consulta SQL.
distintas a la hora de trabajar con mltiples Tambin pude generar la lista de columnas de una tabla si en
ficheros a la vez: el uso de tabs y split. Con cualquiera de los buffers tenemos el CREATE TABLE.
respecto a los tabs, se intent aadir la funcio- Vimspell Simpre es bueno escribir nuestros programas sin faltas de ortografia!
nalidad de edicin mltiple con pestaas que
separen los distintos archivos, al mejor estilo
Firefox. Con respecto al split, ste divide la
pantalla permitiendo ver simultneamente los
ficheros que estamos editando.
Para utilizar tabs en Vim, simplemente
necesitamos aprender un par de comandos,
que son sumamente mnemnicos:

:tabfind archivo: Abre archivo en un


nuevo tab,
:tabnext : Avanza al tab siguiente,
:tabprevious : Avanza al tab anterior
:tabnew : Abre un nuevo tab,
:tabmove n -: Mover el tab a la posi-
cin n.

En la Figura 12, se puede ver como podemos


editar dos archivos usando tabs. En primer lu-
gar, se est editando el archivo main.c y lue-
go el archivo funciones.h. Puede resultar te-
dioso escribir todos estos comandos cada vez
que queramos cambiar de tab o agregar alguno Figura 15. Esquemas de Colores (de izquierda a derecha): CandyCode, CRT, PaintBox y Red

www.lpmagazine.org 45
programacin
El editor Vim

nuevo. Para ello, veremos cmo mapear tec- CTRL+H : Cambia a la ventana de la mos mediante :!gcc %. Podemos dirigir-
las y configurarlas a nuestro gusto en el ar- izquierda, nos a la lnea y obtener directamente una
chivo .vimrc, que lo veremos en detalle en CTRL+l : Cambia a la ventana de la descripcin del error ocurrido invocando
"Configurando el archivo .vimrc". derecha, al comando :cn. Veremos ms comandos
Para utilizar split en Vim, solamente CTRL+= : Iguala los tamaos de las a lo largo de este apartado.
nos tendremos que acordar algunos coman- ventanas, Uso de Plugin CVim: Como se men-
dos (o bien, configurarlos a nuestro gusto). CTRL+_ : Maximiza la ventana actual. cion con anterioridad, el plugin CVim
Los comandos tpicos para el uso de split en tiene la posibilidad de compilar directa-
Vim son los siguientes: Podemos mencionar como otros de los co- mente dentro de Vim. Para ver su uso,
mandos tiles el uso del comando :ls para dirjase al apartado Plugins de Uti-
:hide : Cierra la ventana actual. listar los buffers abiertos y el comando :b lidad.
:only : Cierra todas las ventanas excepto numerodebuffer que abrira el buffer elegido Comando :make : Vim tiene la posibi-
la actual. en la ventana que est actualmente enfocada. lidad de reconocer un archivo Make-
:split archivo o :new archivo : Divide Puede ver un ejemplo del uso de split en la File y poder utilizarlo para poder com-
la ventana horizontalmente, carga archi- Figura 13, donde se est programando un pilar el programa en cuestin. Simple-
vo y lo muestra en la nueva ventana. programa en C y editando los ficheros de mente, dentro de nuestro archivo fuen-
:sview archivo: Igual que :split, pero mu- configuracin .vimrc y .bashrc al mismo te, introduciendo la directiva :make,
estra el archivo en modo de slo lecura. tiempo. Vim compilar automticamente utili-
:vsplit archivo o :vnew archivo: Divi- Sencillo, verdad? Si necesita ms ayuda zando nuestro MakeFile anteriormente
de la ventana verticalmente, carga ar- o quiere investigar ms sobre estos coman- creado.
chivo y lo muestra en la nueva ventana. dos, consulte :help split. Tambin, podemos decirle a Vim que me-
diante el comando :make utilice a GCC
Tambin puedes iniciar Vim en modo multi- Compilacin desde Vim para la compilacin, en vez de nuestro
ventana utilizando la opcin -o seguida por Existen diferentes formas de poder compi- MakeFile. Esto lo logramos con el co-
la lista de archivos que deseas abrir, como en
lar desde Vim. En esta ocasin, nos concen- mando :set makeprg=gcc. Luego, para
el siguiente ejemplo: traremos en 3 mtodos enfocados al lengua- invocarlo usamos :make %.
je C, por su gran popularidad y uso. Vale la
$vim -o programa.c fuciones.h pena aclarar que para compilar otros len- Algo realmente novedoso en Vim, es la
texto.txt guajes, como lo puede ser Java, estos mto- inclusin de la ventana de QuickFix. Esta
dos sufren mnimas variaciones. Los mto- ventana, como su nombre nos indica, tiene
Ahora solamente nos faltan los comandos dos referidos para poder compilar, son los la tarea de facilitarnos el debugging de erro-
para movernos entre las distintas ventanas. siguientes: res. Es decir, cuando compilamos con algu-
Ntese que todos empiezan con la combina- nos de los mtodos descriptos anteriormen-
cin de teclas CTRL+ : Uso de comandos externos de shell: Este te, los errores son informados en la misma
mtodo es el ms sencillo, pero el ms terminal de Shell, es decir, no se ven den-
CTRL+W : Cambia el cursor cclicamen- ineficiente tambin si se trata de proyec- tro de Vim. QuickFix vino a subsanar esta
te entre las ventanas, tos grandes. Simplemente, llamamos al incomodidad. Para invocar a QuickFix
CTRL+J : Cambia a la ventana de abajo, compilador gcc mediante una llamada utilizamos el comando :cope. En la Figura
CTRL+K : Cambia a la ventana de arriba, externa a un comando. Es decir, lo hace- 14 podemos ver a QuickFix en accin, lue-
go de compilar con errores. Los comandos
tiles de QuickFix son:

:cl Listar los errores,


:cc Mostrar el mensaje completo del
error actual,
:cn Moverse al siguiente error,
:cp Moverse al error anterior,
:ccl Cerrar la ventana de QuickFix.

Estos comandos tambin pueden usarse cuan-


do compilamos con :make, y por ejemplo,
no queremos tener la ventana de QuickFix
activada.
Como ltima sugerencia, tal vez puede
resultar ms cmodo mapear las teclas de
los comandos :cn y :cp, ya que se usarn
con frecuencia. Para ello podemos incluir
Figura 16. Muestra del uso de TagList en nuestro .vimrc (ver apartado Confi-

46 Linux+ 9/2009
programacin
El editor Vim

gurando el Archivo .vimrc, el siguiente


cdigo de mapeo, para poder desplazarnos
entre los errores con F7 y F8:

map <F7> :cp<CR>


map <F8> :cn<CR>

Ejecucin de Comandos
de la Shell
Vim posee la caracterstica de poder ejecu-
tar comandos de Shell dentro de l, pegar su
salida en el editor, o bien abrir una nueva
shell sin la necesidad de salir de Vim. Todo
esto se hace mediante simples comandos
del tipo ex. Primero, si queremos ejecutar
una nueva shell sin salir de Vim, simple-
mente tecleamos el siguiente comando
Figura 17. Template de Comentarios principal de CVim
:sh , donde se ejecutar una nueva shell in-
teractiva. Si queremos salir de ella, teclea- Parte 2 de pantalla, y los distintos colores que co-
mos exit. Dentro de esta shell, podras si Configuracin Avanzada rresponden al resaltado de sintaxis. Existen
quisieses, ejecutar Vim de nuevo. Esto es Excelente! Hemos finalizado la primer parte cientos de distintos esquemas, adems de
particularmente til, por ejemplo, cuando del artculo. De ahora en ms, nos dedicare- poder el usuario crear uno personalizado,
ests editando makefiles y/o ficheros de mos a configurar al extremo nuestro editor de simplemente modificando un par de lneas
configuracin de programas en un intento texto agregndole plugins y elementos perso- de un archivo tpico de esquema. Pueden
de hacer que un programa compile correc- nalizados, para poder tener todo un ambiente ver todos los esquemas oficiales de Vim en
tamente. de desarrollo productivo en menos de 7MB. el siguiente enlace http://www.vi-improved.
Ahora bien, para ejecutar comandos de Los temas a tratar de aqu en adelante son: org/colors.php. Si desea, puede descargar
Shell sin tener que salir de Vim, solamente el que le guste, o bien, si desea tener todo
tendremos que poner :!comando, siendo Esquemas de Colores, el pack, puede descargarlo de http://www.
comando el nombre del comando.de she- Plugins de utilidad, busindre.com/wp-content/uploads/2007/06/
ll a ejecutar. Por ejemplo, si ponemos :!ls, Uso de Snippets, Pack_colores_vim.rar.
veremos como se ejecuta el comando ls del La Herramienta vimdiff, Cmo se instalan? Basta con copiar
directorio actual. Luego, presionando la te- Configurando el archivo .vimrc. a la carpeta ~/.vim/colors el/los tema/s (si no
cla Enter volvemos a Vim como si nada hu- existe, crearla). Para seleccionar el esque-
biese ocurrido. Si necesitamos especificar Esquemas de Colores ma a utilizar debe estar previamente acti-
en nuestro comando el nombre del archivo Los esquemas de colores, o colorschemes vado el resaltado de sintaxis con :syntax on,
que tenemos abierto con Vim, lo hacemos son temas visuales que se aplican a Vim y luego, mediante el comando :colorsche-
mediante el comodn %. Por ejemplo, si para que ste tenga un mejor aspecto. Se me nombreEsquema elegimos el de nuestra
queremos saber qu tipo de archivo estamos encargan de modificar el color de fondo preferencia. Si deseamos que siempre que
editando, empleamos el siguiente comando
:!file %. O bien, podemos llamar a gcc para
que compile nuestro cdigo, por ejemplo,
mediante :!gcc % -o Salida y luego
ejecutar el programa mediante :!./Salida
Que fcil no?
Por ltimo, algo muy til es incluir la
salida de un comando de Shell en el archivo
que estamos editando. Por ejemplo, suponga-
mos que estamos editando un cdigo fuente
al que le estamos realizando modificaciones.
Estas modificaciones tienen que ser documen-
tadas, por ejemplo, al principio del archivo
de cdigo fuente. Si queremos cambiar la
fecha en la cual se ha modificado el archivo,
simplemente recurrimos al comando :
r !date y veremos como la nueva fecha
se pega en nuestro cdigo Esto es algo muy
til a la hora de programar! Figura 18. Generacin automtica del Esqueleto de una Funcin mediante Bash-Support

www.lpmagazine.org 47
programacin
El editor Vim

abramos Vim est nuestro esquema pre- gList ,CVim, Bash-Support. A modo de descargaremos e instalaremos el plugin. Pa-
sente, debemos modificar nuestro .vimrc, referencia, en la Tabla 2, podemos ver otros ra descargar el plugin, nos dirigimos a http:
como se ver ms adelante. plugins existentes para que el lector investi- //www.vim.org/scripts/script.php?script_
En la Figura 15 podemos ver cuatro es- gue su uso. id=273. Luego, lo instalamos descompri-
quemas de colores distintos, extrados de la Empecemos con TagList. TagList es un miendo el archivo descargado en el directorio
web oficial de Vim. plugin que nos proporciona un explorador ~/.vim. Listo! Ya podemos usarlo. En la Fi-
de cdigo con el cual podemos desplazarnos gura 16, podemos ver una parte de la funcin
Plugins de Utilidad fcilmente entre diferentes funciones, mto- de bsqueda de texto del Cdigo Fuente de
Existen infinidades de plugins o extensiones dos, clases, variables dentro del cdigo de los Mozilla Firefox, donde se ve a la izquierda
que harn que nuestro Vim sea ms fcil de ficheros que tengamos abiertos, al igual que a TagList en accin.
usar, facilitndonos la realizacin de tareas los grandes IDEs. Para abrir el rbol de TagList, intro-
y dems cosas que hacemos a diario. Tal co- Antes de poder usarlo, es necesario crear ducimos el comando :TlistOpen. Luego,
mo lo indica el nombre de este artculo, nos el archivo de tags. Para ello, usaremos el pro- podemos navegar sobre l como si se tratara
concentraremos en los plugins especficos que grama ctags, que puede instalarse mediante de otra ventana, aunque con algunas caracte-
nos sern de ayuda a la hora de programar. sudo apt-get install exuberant-ctags. rsticas ms. Por ejemplo, si nos paramos en
Debido a la gran cantidad de lenguajes de pro- Luego, crearemos el fichero de tags posicio- el nombre de una funcin y luego presiona-
gramacin existentes, existen muchos plugins nndonos en el directorio donde tenemos mos la tecla space-bar, veremos como se nos
que son especficos para algunos o muchos nuestro archivo fuente e introduciendo el informa en la parte inferior de la pantalla el
de ellos. Por motivos de espacio, presenta- comando ctags *.c *h, para que genere prototipo de esa funcin. Si queremos ir a la
remos solamente el uso de tres plugins: Ta- todos los tags que utilizar TagList. Ahora, definicin de una funcin, simplemente nos

Listado 1. Fichero vimrc orientado a la programacin

"---------------------------------------------------"
" Fichero de configuracin de .vimrc [Revista Linux+] "Realiza una Copia de Seguridad del Fichero
" set backup
"---------------------------------------------------" "Directorio de la Copia de Seguridad
"Detecta el Tipo de Archivo Automaticamente set backupdir=~/.tmp
filetype on "Todo lo que copiemos en el registro se copiar
"Activamos soporte plugins tambin en el portapapeles
filetype plugin on set clipboard=unnamed
" Coloreado de Sintaxis "Para guardar los cambios y compilar automticamente
syntax on con <F5>
"Esquema de Colores map <F5> :wall<CR>:make<CR>
colorscheme seoul imap <F5> <ESC>:wall<CR>:make<CR>
"Numerado de Lineas "Modifica la Barra de estado
set number set statusline=%F%m%r%h%w\ [%{&ff}]\ [%Y]\ [HEX=\
"Resalta la { 0 ) que estamos cerrando %02.2B]\ [X=%04l\ Y=%03v]\ [LEN=%L]
set sm "Desactiva el sonido de error y lo sustituye
"Mostrar la posicion del cursor en todo momento por un parpadeo
set ruler "blanco en la pantalla
"Indentado Automatico set visualbell
set smartindent "Mapeo para los Tabs
"Ignora si la palabra esta en mayusculas o minusculas map ,t :tabnew
set ignorecase map ,1 :tabprevious
"Busca la Palabra a medida que la tecleamos map ,2 :tabnext
set incsearch map ,f :tabfind
"Resalta las palabras encontradas map ,m :tabmove
set hlsearch map ,n :tabnew
" Ocultar el mouse cuando escribimos "Pone una linea horizontal donde se encuentra
set mousehide el cursor
"Tabulacion de 3 caracteres "set cursorline
set ts=3 "Pone una linea vertical donde se encuentra el cursor
"Indentado de 3 caracteres "set cursorcolumn
set sw=3 "--------------- Fin de archivo vimrc --------------"
"Cambia los tabs por espacios
set expandtab

48 Linux+ 9/2009
programacin
El editor Vim

posicionamos en el nombre de la funcin nerar. Una vez introducido el nombre, se Escribir los esqueletos de los distintos co-
y presionamos la tecla ENTER. Por ltimo, si autogenerar el cuerpo de la funcin. Ca- mandos de control (if, case, for, while...),
nos interesa saber el nmero de funciones que ractersticas como stas tenemos a monto- Verificar la sintaxis,
contiene nuestro cdigo fuente, vamos hacia nes, las cuales numero y describo algunas Consultar la documentacin de un co-
el TagList, nos posicionamos sobre la palabra a continuacin: mando de Bash,
function y presionamos la tecla space-bar. Convertir un bloque de cdigo en comen-
Tambin podemos navegar mediante los Insertar cuerpo de la Funcin main. Para tario o viceversa,
tags usando el modo comando. Por ejemplo, que nos genere automticamente el cuer- Escribir rpidamente expresiones regulares.
si ponemos :ta nombreFuncion, nos dirigire- po de la funcin main, utilizamos el co-
mos directamente al cuerpo de la funcin que mando \im. Este plugin ha sido programado por Fritz
hayamos especificado. Para ms informa- Comentario de Descripcin de una Fun- Mehner, el mismo autor que el CVim. Es
cin, podemos apretar F1 mientras la TagList cin. Esto lo podemos lograr con el co- por ello, que las formas de realizar las
tiene foco, o bien dirigirnos a http://vim- mando \cfu. Al igual que \if, nos pre- acciones automticas en Bash-Support son
taglist.sourceforge.net/manual.html. guntar el nombre de la funcin. similares a las de CVim, por lo cual no me-
Ahora pasemos a otro excelente plugin: Insertar comentarios simples. Para ello, rece una explicacin tan exhaustiva. A con-
CVim. Como el lector se lo imaginar, este existe el comando \cfr. tinuacin se numeran algunas caractersti-
plugin est realizado pura y exclusivamente Guardar, Compilar y Ejecutar. S, todos cas de Bash-Support y la forma de llevarlas
para facilitarnos la programacin mediante el estos pasos los realizamos con solo in- a cabo:
lenguaje C. Como todos los plugins, lo des- troducir el comando \rc. Para ejecutar
cargamos (http://www.vim.org/scripts/script. el programa, existe el comando \rr. Cabeceras Automticas. Cuando crees un
php?script_id=213) y lo instalamos. Sin ms archivo con la extensin .sh, ste comen-
que acotar, estudiemos sus caractersticas, las Existen muchas ms caractersticas que po- zar con una cabecera predefinida por
cuales nos permitirn: see CVim. Para ms informacin, visite la Bash-Support, el cual contendr campos
documentacin oficial en http://lug.fh-swf.de/ a completar por el programador, como
Agregar archivos de cabecera, vim/vim-doc/csupport.html, o bien el manual puede ser "Descripcin del Script", "Au-
Incluir fragmentos de cdigo predeter- interno :h csupport. tor", "Fecha", "Modificaciones", "Bugs",
minados, Por ltimo, nos queda describir a otro exce- "Opciones", etc.
Realizar comprobacin de sintaxis, lente plugin. Esta vez, nos enfocaremos a la Esta cabecera puede personalizarse f-
Leer documentacin sobre una determi- programacin de Shell Scripts, usando Bash. cilmente editando el fichero: ~/.vim/bash-
nada funcin, El plugin en cuestin se denomina Bash-Sup- support/templates/bash-file-header.
Convertir un bloque de cdigo a comen- port, y se puede descargar e instalar desde Esqueletos de Funciones. Si en el editor
tario, o viceversa, http://www.vim.org/scripts/script.php?script_id en modo Normal pulsamos la secuencia
Indentacin Automtica, =365, y es el que estudiaremos a continuacin. \sfu (statement function declaracin
Etc. Bash.Support nos provee bsicamente las de funcin) nos aparece un prompt en
mismas facilidades que nos provee CVim, es el que se pide el nombre de la funcin.
stas son solamente algunas de las tareas decir, nos brinda la posibilidad de: Una vez tecleado ("funcin_ejemplo")
que nos ofrece CVim. Veamos cmo realizar veremos que en el lugar del cursor se
algunas de ellas. Aadir automticamente cabeceras a los habr insertado el esqueleto bsico de la
Algo con lo cual nos encontramos al abrir ficheros, funcin, tal y como puede verse en la Fi-
un archivo de extensin .c con Vim y nos sor- Aadir comentarios de diversos tipos, gura 18.
prende, es la inclusin automtica de cabece-
ras para el cdigo. Esto lo podemos observar
en la Figura 17. Sin duda, es muy interesante
y til para los programadores, ya que permite
tener documentado (mnimamente) el cdigo
a desarrollar. Si queremos modificar el templa-
te que genera esta cabecera, nos dirigimos al
directorio ~/.vim/c-support/templates/ y edi-
tamos el archivo Templates. El archivo es
muy intuitivo para su edicin, solamente tie-
ne claves del tipo par-valor, por lo cual no
merece una explicacin.
Otra de las caractersticas que nos provee
CVim es la posibilidad de generarnos cdigo
automtico para la realizacin de una funcin.
Por ejemplo, entramos en el modo comando,
y luego presionamos \if, veremos como Vim
nos preguntar el nombre de la funcin a ge- Figura 19. Inclusin de la funcin assert de manera automtica

www.lpmagazine.org 49
programacin
El editor Vim

mentos a partir del cdigo que estemos Un snippet esttico es simplemente texto
Vim Online creando. que se utiliza una y otra vez sin cambiar
Para crear un snippet a partir de nuestro nunca. Un snippet dinmico, depende de di-
Si ests en una PC editando un archi-
cdigo primero deberemos marcar la ferentes parmetros que coloca el progra-
vo de texto y no puedes aguantar la
porcin de texto que queremos guardar mador, y se genera el cdigo dependiendo
desesperacin de no tener a Vi en tus
(usando + v para entrar en el modo "Vi- de stos..
manos, puedes recurrir a alternativas
sual" y desplazando el cursor para se- Siguiendo la clasificacin de esta
online. Con el furor de la nueva era
leccionar). A continuacin teclearemos definicin, en este apartado veremos un
de la Cloud Computing, cada vez son
\nw. Se nos solicitar un nombre con el ejemplo de snippet dinmico. Un snippet
ms las aplicaciones que se encuen-
que guardar ese fragmento y que luego esttico es, por ejemplo, las abreviaciones
tran en la nube para poder ser usa-
con \nr recuperaremos todas las veces (ver cuadro Tip: Abreviando Texto con
das por cualquier usuario. Vim no hace
que queramos. Vim).
excepcin. En el sitio http://gpl.inter-
Un ejemplo del uso de Snippet puede Ahora bien, utilizaremos como ejem-
netconnection.net/vi/ se ofrece una ver-
verse en la Figura 19, donde usamos el plo el snippet snipMate, que se encargar
sin online de este magnifico editor
comando \nr assert para incluir la de autocompletar secciones repetitivas del
de texto, al que han apodado jsvi.
funcin. cdigo tales como ciclos, condicionales
El nico requisito es tener un navega-
Obtener ayuda rpida sobre comandos y constructores de funciones de manera
dor web que soporte JavaScript. Este
internos de Bash. Para poder lograr sencilla. Algo muy til a la hora de pro-
simulador de Vi funciona con casi
esto, nos situamos sobre el nombre de gramar. Es vlido aclarar que estos tipos
todas las claves y comandos de sus-
la funcin que queremos recibir ayuda de snippets nos brindan la posibilidad de
titucin habituales, y puedes copiar
y apretamos el comando \hh. Veremos crear los nuestros personalizados, cosa que
y pegar desde el portapapeles de tu
en la parte superior de Vim la ayuda del tambin aprenderemos a realizar en este
ordenador.
manual sobre ese comando. apartado.
En primer lugar, tenemos que descargar
Comentarios de funciones. De un mo- Muchas cosas ms pueden lograrse con este el snipMate. Podemos hacerlo desde esta
do anlogo a las cabeceras del script, fantstico plugin. Si desea aprender ms, URL http://www.vim.org/scripts/script.php?
podis personalizar las cabeceras de puede dirigirse a http://lug.fh-swf.de/vim/ script_id=2540. Luego, procedemos a ins-
comentarios de las funciones editando vim-doc/bashsupport.html. talarlo, descomprimiendo el archivo des-
el archivo bash-function-descrip- cargado en el directorio ~/.vim. Listo! Ya
tion. Despus de personalizar y tra- Uso de Snippets podemos utilizar sus funcionalidades. Para
ducir la cabecera con la secuencia \cfu Haciendo una definicin exacta, podemos de- ver la potencia de snipMate, creamos un
podrs insertar un bloque de comenta- cir que un snippet es una pequea porcin de archivo de ejemplo, que podra llamarse
rios a la funcin. cdigo o texto de programacin. Son utilizados main.c, haciendo referencia al programa
Insertar Estructuras del Lenguaje de generalmente para minimizar la repeticin de principal de un archivo programado en C.
manera automtica. Mediante el coman- cdigos, hacer ms claros los algoritmos o per- Una vez en l, entramos al modo insercin,
do \s (de statement) podemos insertar mitir que una aplicacin genere el cdigo au- y luego escribimos la palabra main y pre-
estructuras del lenguaje. La Tabla 3 re- tomticamente. Muchos editores de texto, edi- sionamos la tecla <TAB>. Veremos como
sume su uso. tores de cdigos fuente, IDEs y programas si- automticamente se nos completa la estruc-
Insertar fragmentos de cdigo predefini- milares, permiten administrar snippets para tura de un programa en C. Tambin, pode-
dos. Para insertar rpidamente porciones facilitar las tareas al programador, especialmen- mos escribir la palabra for y luego presiona-
de cdigo que tecleamos muy a menudo, te en aquellas rutinarias. Los snippets pueden mos la tecla <TAB>, y veremos como se
tenemos la combinacin \nr que debe- ser estticos o dinmicos. autocompleta la estructura for. Excelente!
mos usar desde el modo de Comando.
Al pulsarla nos aparece un prompt
pidindonos el nombre del fichero que
contiene el pedazo de cdigo que que-
remos insertar. Fcilmente podemos
recorrerlos uno a uno pulsando la tecla
de tabulacin varias veces. Por defecto
en el sistema se incluyen unos cuantos
fragmentos (snippets), algunos de ellos
muy interesantes. Los ficheros que al-
macenan estos fragmentos de cdigo se
encuentran en ~/.vim/bash-support/code-
snippets/ de modo que se pueden modi-
ficar fcilmente para adaptarlos a nues-
tras preferencias, tambin podemos crear
nuevos fragmentos o incluso crear frag- Figura 20. La herramienta vimdiff

50 Linux+ 9/2009
programacin
El editor Vim

Podemos ver un excelente screencast so- Bsicamente, los comandos propios de se almacenar una copia de la versin
bre snipMate en http://vimeo.com/3535418. vimdiff que necesitamos saber para defen- anterior como fichero~ (con el carcter
dernos son: ~ detrs).
La Herramienta vimdiff
Todo buen programador sabe apreciar lo [c : Salta a la diferencia anterior Los comentarios se aplican con las comillas
tiles que son las herramientas de compa- ]c : Salta a la diferencia siguiente dobles (), para conocer la totalidad de op-
racin de archivos. Conociendo a vimdiff, ciones de Vim y una explicacin de cada una
lo sabr apreciar aun ms. Vimdiff es una La Figura 13 muestra un ejemplo del uso de de ellas, puedes hacerlo mediante la ayuda
herramienta basada en Vim que permite la herramienta vimdiff en accin. incluida al respecto en Vim, que se despliega
editar dos o ms ficheros simultneamente tecleando :options
en tiempo real en busca de diferencias entre Configurando
ellos. En concreto, abrir en dos ventanas el Archivo vimrc Conclusin
verticales dentro de vim los dos ficheros (o En el archivo .vimrc podemos poner nues- Como puede ser fcilmente visto anterior-
ms) que se le pasen como parmetros, mar- tras configuraciones especficas y concretas mente, Vim es un potente y flexible editor de
cando con distintos colores las diferencias de Vim, tales como el resaltado de sintaxis, texto con un montn de caractersticas que
debidas a aadidos, borrados o similitudes el numerado de lnea, para no tenerlas que pueden ser fcilmente aadidas a la distri-
entre ambos. Tambin, permite el scroll sin- cargar manualmente cada vez que iniciamos bucin por defecto. No tiene absolutamente
cronizado de ambas ventanas. Para usarlo, Vim. Muchas cosas ms que hemos visto nada que envidiarle a los grandes IDEs, es
simplemente lo debemos invocar desde la a lo largo de este artculo podemos configu- ms, muchas caractersticas de Vim son segu-
shell con vimdiff archivo1 archivo2 rarlas en l. Si queremos que la configura- ramente envidiadas por ellos. Como progra-
[archivo3 [archivo4]] o de forma equi- cin impacte slo para nuestro usuario, mo- madores pasamos el 90% del tiempo editando
valente, podemos llamarlo directamente dificamos el archivo $HOME/.vimrc o bien, un archivo de cdigo fuente, y el otro 10%, en
desde vim con la opcin -d asi vim -d file1 si queremos afectar a todos los usuarios que el mejor de los casos, corrigiendo errores. Es
file2 [file3 [file4]]. usen Vim en el sistema, modificamos el ar- por ello, que no existe excusa para no apren-
Cuando llamemos a vimdiff, ste marca- chivo /etc/vim/vimrc. De no existir estos fi- der a usar este magnifico editor de texto.
r las diferencias entre los archivos con tres cheros, puede crearlos mediante el comando Espero que el artculo les sea de utilidad,
colores diferentes. Por defecto, el color rosa touch. y puedan exprimirlo al 100%. Cualquier duda
son lneas que contienen alguna diferencia, El fichero .vimrc no slo permite especi- o consulta, pueden realizarla a jorge.capu-
las lneas con color azul oscuro indican que se ficar parmetros y opciones de arranque para rro@linuxmail.org, que se las responder lo
han aadido, las lneas con azul claro mues- Vim: es mucho ms que eso. En l puedes antes posible. Hasta la Prxima!
tran las que faltan, y las de color rojo las que programar en un lenguaje de programacin
cambian. interno de Vim nuestras propias funciones,
Como vimdiff es una herramienta que macros, filtros de texto, etc., hacindolo
se empotra en Vim, podemos utilizar los ms productivo y personalizable a la hora Sobre el autor
mismos comandos de siempre, como por de usarlo.
Jorge Emanuel Capurro es estudiante de
ejemplo para el movimiento entre ventanas Las opciones de configuracin son las
la Tec. Superior en Programacin, carre-
que explicamos con anterioridad. mismas que vimos hasta el momento pero sin
ra dictada en la Universidad Tecnolgica
anteponer el signo de dos puntos (:). Es decir,
Nacional Facultad Regional Haedo,
si queremos activar el resaltado de sintaxis
provincia de Buenos Aires, Argentina.
Eclim, integrando Eclipse cada vez que se inicie Vim, tendremos que
Principalmente, su rea de investigacin
con Vim aadir al vimrc el comando syntax on.
se centra en los Sistemas Operativos
A continuacin se explican algunas de
Eclipse es un IDE multiplataforma y libre de tipo UNIX y de la programacin bajo
las opciones clsicas. Luego, en el Listado 1,
para crear aplicaciones de cualquier tipo. dicha plataforma.
podemos ver un ejemplo de vimrc orientado
Eclim es un impresionante proyecto que Es el creador del proyecto IDEas
a la programacin con su correspondiente
permite integrar las funcionalidades de (http://ideasc.sourceforge.net), que es
explicacin.
Eclipse, con el mucho ms modesto el primer frontend desarrollado bajo
pero omnipresente editor de textos VIM. Gambas del compilador gcc (http://gcc.
filetype plugin on: Habilita el uso
De manera que tan slo ejecutando VIM gnu.org), que se utiliza con fines didc-
de plugins discriminndolos por tipo de
podrs disponer de todas las ventajas ticos. Actualmente se desempea como
archivo.
que te proporciona Eclipse. Se instala de programador para la empresa argentina
syntax on: Habilita el resaltado de sin-
manera similar a cualquier plugin de Vim. VATES S.A. Ingeniera de Software
taxis.
De manera similar tambin tenemos CMMI 5 (http://www.vates.com/) partici-
set hlsearch: Habilita el coloreado de
jVim, pero desde la mano de NetBeans pando activamente en la Software Fac-
las palabras encontradas en las bsque-
(http://jvi.sourceforge.net/) aunque no tory. Actualmente, se encuentra en el
das, en un color diferente del color del
est tan potente. proyecto de edicin de un libro dedicado
texto.
Para probar Eclim, podemos descar- a la Programacin de Sistemas GNU/
set backup: Si est activada esta op-
garlo de http://eclim.sourceforge.net/. Linux.
cin, cada vez que grabemos el fichero

www.lpmagazine.org 51

También podría gustarte