Aprende Vim en 2 Minutos
Modos de trabajo
Vim tiene dos modos de trabajos: El Modo de Edición y el Modo Comando. Cuando inicias el programa te encuentras en Modo Comando, para acceder al Modo de Edición y empezar a trabajar con el texto debes introducir algún comando de inserción (cómo «a» o «i»).
Para volver de nuevo al modo comando debes pulsar la tecla ESCAPE. Si esto te parece farragoso no te preocupes: cuando te hagas a ello lo encontrarás tremendamente rápido y natural (los autores ahora mismo encuentran liosos los editores no modales, pero hemos llegado a un estado de vim-degeneración tremendo).
Comandos Habituales
Vim dispone de muchÃÂsimos comandos y macros. Sin embargo, aquàvamos a exponer los que nosotros y seguro que el resto de Vim-fieles también, usa el 95 % de las veces.
a Entra en modo edición en la posición anterior del cursor.
i Igual que «a» pero en la posición actúal del cursor
o Inserta una nueva linea en blanco debajo de la actúal y entra en modo edición en esa nueva lÃÂnea
u Deshacer la última acción (tiene varios niveles)
r Reemplaza un caracter
:e nombre_del_archivo Edita un fichero una vez tenemos el Vim abierto
:w Guardar
:w! Forzar a guardar
:q Salir
:q! Salir sin guardar
Guardar y salir
ngg Va a la lÃÂnea n
ndd Elimina n lÃÂneas a partir de la actúal
dd Elimina una lÃÂnea
/cadena Busca la cadena cadena en el texto
?cadena Busca la cadena cadena hacia atrás en el texto.
!comando Ejecuta el comando
!bash Este ejemplo ejecutarÃÂa el bash (yo prefiero guardar y pulsar(Control+z) !make
Este otro ejemplo ejecutarÃÂa make desde el directorio en el que lanzamos Vim
:make Este comando es mucho más útil que el anterior: Ejecuta make desde el directorio desde el que lanzamos Vim, pero si hay algún error salta directamente a el.
Control-Z Detener momentaneamente el Vim (por ejemplo para compilar y probar un programa)
:r nombre_de_archivo Insertar un archivo en la posición del cursos.
Control+g Nos dice el número de lÃÂnea en el que estamos
:%s/cadena 1/cadena 2/ Sustituye en el texto cada ocurrencia de cadena 1 por cadena 2
v Entra en modo Visual. En este modo seleccionaremos un texto con los cursores, y después podremos cortar, copiar y pegar con los comandos:
y Copiar (de «yank»)
c Cortar
p Pegar
Con estos comandos ya puedes ir tirando. Para conocer el resto de comandos, opciones y macros del Vim puedes pulsar F1 cuando estés en el programa y accederás a una magnÃÂfica ayuda.
Comandos para programadores
Si programas habitualmente, te conviene perder otro par de minutos para aprender estos comandos:
make
Por defecto ejecutará el comando ‘make’ en el directorio actúal. La diferencia con hacer !make es que cuando se muestran los errores podemos saltar al lugar del archivo donde se encuentra el primero pulsando intro, y a los siguientes errores con :en.
Podemos especificar cualquier otro comando para compilar mediante la variable ‘makeprg’, por ejemplo si nuestro programa consistiera únicamente en ‘archivo.c’ (que es el que estamos editando), podrÃÂamos especificar: set makeprg=’gcc archivo.c -o archivo’
} y { En modo programación saltan al siguiente o previo conjunto de sentencias.
w y b En modo programación saltan a la siguiente o anterior ‘palabra’ pero con un concepto de ‘palabra’ dependiente de cada lenguaje.
gd Salta a la declaración, o primera aparición en este archivo, del sÃÂmbolo sobre el que se encuentra el cursor.
m[letra] y ‘[letra] Establece una marca, a la que podremos saltar posteriormente. Si ‘letra’ es minúscula, sólo podremos volver a la marca desde el mismo archivo en que se situó, si es una letra mayúsculas podremos volver incluso desde otros archivos.
Control-P Autocomplexión. UTILÃÂSIMO. Para hacer uso de esto no hace falta salir del modo edición. Cuando pulsemos Control-P autocompletará lo que llevemos escrito con el nombre de cualquier otro sÃÂmbolo coincidente.
Modo Control-X Este modo se utilizado pulsando control x y después otra pulsación con control. Dependiendo de esa pulsación se realizará una acción de autocomplexión u otra. Dos de las más útiles son la autocomplexión con ficheros existentes (por ejemplo, si en mi sistema escribo /home/ju y pulso control x seguido de control f se autocompletará con /home/juanjux/).
Otra combinación de Control x útil para programar es la de ‘diccionario’. Esta consiste en que tenemos un archivo en el que escribimos una palabra en cada lÃÂnea. Después si fijamos la variable diccionario a ese archivo con ’set dictionary=archivo’ cuando pulsemos Control X Contol K (de Keyword) lo que llevemos escrito se autocompletará con palabras del diccionario.
:e En muchas ocasiones es muy útil tener varios archivos abiertos y poder cambiar rápidamente de uno a otro. Esto con Vim se consigue abriendo los distintos archivos que nos interesen con :e fichero y después podemos cambiar de uno a otro volviendo a escribir :e fichero. También podemos cambiar de un fichero (buffer) a otro escribiendo :b[numero] siendo [número] es que le corresponda al buffer según el orden en el que fue abiertos. Para ver que número corresponde a cada buffer podemos listarlos con :buffers. Antes de cambiar de un buffer a otro es necesario guardar el actúal (:w).
:split Divide la pantalla actúal en dos, entre las que podemos cambiar con Control W Control W, o Control W y arriba o abajo. A su vez, cada uno de las subpantallas podemos dividirlas en más. También podemos hacer divisiones verticales con :vsplit. Para cerrar una división nos situaremos en ella y pulsamos :q. Es interesante destacar que podemos, mediante divisiones, visualizar varias partes de un archivo al mismo tiempo lo que nos permite visualizar declaraciones y otros datos de importancia mientras codificamos (por ejemplo, dividimos la pantalla, nos situamos en una de las divisiones, y saltamos con :gd a la declaración).
El .vimrc En el archivo de configuración ($HOME/.vimrc) tienes varias opciones. Las que yo utilizo son:
set sw=3 Por defecto Vim produce unas tabulaciones de 8 caracteres. Esto, si estás programando, puede producir que en cuando tengas unos pocos bloques anidados se te acaben las lÃÂneas enseguida. Por eso, con esta opción establezco las tabulaciones a tres blancos.
set ai
Autoindent: Cada vez que pulsamos intro para acceder a una nueva lÃÂnea, Vim indentará esa lÃÂnea del mismo modo que la lÃÂnea anterior. Si estamos bajo Linux, y usando el controlador para ratón en consola GPM, esto puede tener el indeable efecto de que al pegar texto con el ratón se nos descoloquen todas las lÃÂneas (porque va tomando la indentación de la anterior y se van acumulando). La forma de evitar esto es hacer justo antes de pegar ‘:set noai’ pera desactivar la autoindentación, y ‘:set ai’ para activarla después. El Auténtico Hombre Vago (TM) se deberÃÂa hacer una macro para esto, aunque al Realmente Auténtico Hombre Vago (TM), como yo, le da pereza hacerla…
set cindent
Realiza una indentación inteligente según lo que estemos introduciendo (por ejmplo pondrá una tabulación tras una llave «{» si estamos con un programa en C, o la reducirá cuando encuentre una llave de cierre). Para más información sobre esta opción es recomendable ver la ayuda
set sm
Cada vez que cerremos un paréntesis, llave o corchete nos mostrará la apertura equivalente. Esto es treméndamente útil a la hora de programar ya que en muchas ocasiones nos evita errores, o ayuda a identificarlos, sobre todo a los degenerados que programan en Lisp.
set ruler
Nos indicará en todo momento, en la parte inferior de la pantalla, la lÃÂnea y columna en la que estamos.
set nocompatible
Pone los valores por defecto del Vim, en lugar de los de Vi. Pone varias opciones de configuración interesantes, pero puede confundir a los que estén acostumbrados a manejar en Vi. Sin embargo, recomendamos enérgicamente activar esta opción.
Crear comandos
En el fichero .vimrc podemos además crear nuestros propios comandos mediante el comando map. Vamos a crear por ejemplo un comando para comentar lineas de shell scripts. Si lo hiciéramos “a pelo” tendrÃÂamos que pulsar i para ponernos en modo INSERT y, entonces, ir linea por lÃÂnea colocándonos al principio e insertando un carácter #. Vamos a ver cómo serÃÂa el comando:
map ^[c ^[^I#^[j
Vamos por partes:
map: Comando para asignar a una combinación de teclas unas acciones determinadas.
^[c: Con esto lo que queremos decir es: "cuando pulses ALT+c .....". Para ponerlo nos ponemos en modo "INSERT" y pulsamos CTL+v seguido de ALT+c. Esto se aplica a cualquier comando que queramos crear.
^[: Esta secuencia tiene el mismo efecto que si pulsáramos dentro del editor la tecla ESC (pasar a modo comando) y, por lo tanto, lo conseguimos mediante la secuencia dentro del editor: CTL+v seguido de ESC.
^: Mediante esta secuencia lo que conseguimos es ponernos al principio de la lÃÂnea. Esto es análogo al uso que en grep se le da a ^
I#: Una vez que estamos al principio de la lÃÂnea lo que queremos es insertar un "#". Por lo tanto nos ponemos en modo insertar y le decimos que ponga "#".
^[j: Nos ponemos en modo comando para mover el cursor una lÃÂnea hacia abajo mediante el comando "j". Para ponernos en modo comando, puesto que es igual que si pulsáramos la tecla ESC dentro del editor, utilizamos la secuencia CTL+v seguido de ESC. Poniendo j después conseguimos que el cursor avance una lÃÂnea.
Y ya tenemos terminado nuestro comando. Grabamos el .vimrc, y cuando entremos al vim y pulsemos ALT+c se comentará la lÃÂnea en la que estemos trabajando. El comando para comentar una lÃÂnea de un fuente de C serÃÂa muy parecido:
map ^[v ^[^I//^[j
Con este comando al pulsar ALT+v se insertará "//" al principio de la lÃÂnea y bajará a la siguiente.
Crear alias para "palabras" habituales
Otro "truquillo" que podemos utilizar en el .vimrc es el de crear alias para palabras habituales que normalmente utilicemos en nuestros documentos. Si, por ejemplo, sueles poner tu dirección de correo y tu nombre en tus documentos, estarÃÂa bien poder disminuir el número de teclas a pulsar para no tener que estar repitiendo siempre lo mismo.
Para crear alias utilizamos el comando ab. Vamos a hacer un alias para la dirección de correo electrónico:
ab dcr ferkys@pagina.de
Incluyendo esto en el fichero .vimrc la próxima vez que, estando trabajando con vim, pongamos la secuencia dcr (como una palabra a parte, si forma parte de una palabra no se sustituye) la transformará en ferkys@pagina.de
Crear macros en vi
Este si que es bueno y lo acabo de descubrir. Supongamos que dedicamos mucho tiempo a hacer páginas html. Hay ciertos caracteres que no están permitidos, tales como &. Si no queremos tener que estar continuamente poniendo & para imprimir un ampersand podemos hacernos una macro.
Creamos un archivo en el directorio, por ejemplo, ~/macros, y lo llamamos ampconv. Dentro de el ponemos el comando de substitución tal y como lo pondrÃÂamos en vi:
%s/&/&/g
Una vez hecho esto, cuando terminemos de escribir un fichero html nos ponemos en modo comando y ponemos:
":so ~/macros/ampconv"
y se ejecutarán las substituciones de todos los ampersand para que los reconozca html.
Trabajando con ficheros cifrados
Si queremos cifrar los ficheros con los que trabajamos... utilizaremos PGP o GnuPG. Pero si no nos apetece usarlo, no lo tenemos instalado o simplemente queremos editar rápidamente un archivo y que vim lo cifre podemos arrancarlo con vim -x nos pedirá una clave, grabará el archivo cifrado y cuando volvamos a abrirlo nos pedirá de nuevo la clave (si no se la damos correctamente poco o nada veremos).
El programa Ctags
Ctags es un programa que crea, a partir de un directorio o jerarquÃÂa de directorios conteniendo archivos fuente C, un archivo llamado tags que podremos utilizar con el Vim para «saltar» a las declaraciones de funciones, macros, estructuras de datos, etc, simplemente situándonos encima del nombre con el cursor y pulsando Control-] (aunque la definición se encuentre en otro archivo). Para volver atrás se utiliza Control-T.
De este modo podemos acelerar bastante nuestro desarrollo, dado que, por ejemplo, si vemos que para acabar una función que estamos implementando necesitamos modificar un cierta estrcutura de datos, no hace falta salir, editar el archivo donde está definida la estructura, salir y volver a abrir el archivo donde estamos trabajando con la función, sino que podemos situarnos encima del nombre, pulsar Control-], modificar la estructura de datos, pulsar Control-T, y volver a trabajar en nuestra función.
El uso del ejecutable ctags no requiere de grandes listas de parámetros (aunque como todo buen programa Unix las acepta…) , un uso habitúal serÃÂa simplemente entrar en el directorio en el que tenemos nuestros archivos fuente y poner ctags -R . para que nos haga un archivo tags con todos los archivos fuente del directorio actúal y sus subdirectorios.
——————————————————————————–
(c) 1999-2000 Juan José ÃÂlvarez MartÃÂnez y FermÃÂn MartÃÂnez Fernández
Este documento puede distribuirse libremente bajo los términos de la licencia GPL tanto en su versión dos como (a su elección) posteriores. Sin embargo los autores agradecerÃÂan notificación de modificaciones y publicación en medios electrónicos o no.
También recordamos que todo producto derivado de un producto GPL (como este documento) cae automáticamente bajo los términos de la licencia GPL.








