Documentos de Académico
Documentos de Profesional
Documentos de Cultura
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
38 Linux+ 9/2009
programacin
El editor Vim
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:
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.
www.lpmagazine.org 41
programacin
El editor Vim
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:
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
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:
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:
46 Linux+ 9/2009
programacin
El editor Vim
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
"---------------------------------------------------"
" 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