Aprendiendo vi - el método de la Hoja de Trucos
1.
Empezando
Introducción
Ésta guia le enseñará a usar vi, un potente editor visual. Utilizando un
método especial basado en una hoja de trucos, este tutorial se ha
escrito para convertirle en un usuario hábil de vi sin que tenga que
emplear mucho tiempo. En este tutorial, aprenderá como moverte, editar
texto, usar el modo insertar, copiar y pegar texto así como usar
extensiones importantes de vim como el modo visual y la edición
con múltiples ventanas.
Si desconoce o no se siente cómodo usando vi, quizás quiera leer
este tutorial y ganar velocidad en uno de los más populares y poderosos
editores visuales para Linux/UNIX
Sobre esta guía...
Hay una característica de vi que hace difícil aprender su funcionamiento...
vi tiene muchos comandos. Para usar vi de una forma efectiva, va a tener
que memorizar unos cuantos. Ésto puede llevarle tiempo, y uno de los
objetivos de este tutorial es no quitarle demasiado tiempo. Así que,
desde el principio, tenemos un reto -- ¿Qué podemos hacer para que
recuerde un montón de comandos en poco tiempo?
Para superar este reto, conforme vayamos avanzando en este tutorial,
vamos a ir construyendo gradualmente una hoja de trucos para vi. Esta
hoja va a contener todos los comandos importantes de vi. Una vez haya
completado este tutorial, podrá acudir a su hoja de trucos si ha
olvidado un comando en particular. Conforme pase el tiempo, irá
memorizando los comandos, y cada vez dependerá menos de la hoja de trucos.
¡Vas a aprender a utilizar vi de la forma más rápida nunca conocida!
El proceso de aprendizaje
En ésta guia voy a usar varias técnicas para ayudarle a aprender.
En primer lugar, voy a describirle como funcionan ciertos comandos en
particular, como era de esperar. Después, voy a pedirle que pruebe esos
comandos directamente en vi (para que practique), entonces le pediré
que apunte esos comandos en su hoja de trucos (para que pueda consultarlo
más adelante). Si quiere aprender vi rápidamente, es muy importante que
siga todos esos pasos. Probar un comando y transcribirlo después a su
hoja de trucos le ayudará a memorizar ese comando.
Presentación de vim
Existen muchas versiones de vi. En esta guía voy a mostrarle cómo utilizar
una versión de vi llamada vim. El editor vim es muy popular y tiene
un montón de extensiones que hacen a vi mucho más ameno (si en algún
momento, enseño un comando específico de vim, lo indicaré). Si necesita
instalar vim, puede obtenerlo en
www.vim.org. Además de una linea de
comandos vi mejorada, vim también viene con gvim, un excelente
editor en modo gráfico que se puede configurar para usar las excelentes
librerías GTK+ para interfaces gráficas de usuario. A continuación se
muestra una captura de pantalla de gvim tomada de mi sistema:
Ilustración 1.1: Captura de GVIM |
 |
Si es un novato, intente ejecutar gvim en su sistema. Usar vi en una
GUI puede hacer la vida más fácil a los principiantes.
2.
Primeros pasos
Escoja un archivo
Antes de usar vi para editar archivos, necesita saber como usar vi para
moverse por un archivo. Existen muchos comandos de movimiento en vi,
y vamos a ver unos cuantos. Para esta parte del tutorial, busque un archivo
de texto que no tenga importancia y ábralo en vi escribiendo:
Listado de Código 2.1: Cargar un archivo en vi |
$ vi mifichero.txt
|
Si ha instalado vim, escriba vim mifichero.txt. Si prefiere usar
gvim, teclee gvim mifichero.txt. mifichero.txt debe ser el
nombre de un archivo de texto en su sistema.
Dentro de vi
Después de que vi cargue, debería ver una parte del archivo de texto que
cargó en la pantalla. Felicidades -- ¡está en vi! A diferencia de muchos
otros editores, cuando vi arranca, está en un modo especial llamado
modo comando. Esto significa que si presionas l en el
teclado, en vez de introducir una l en la posición actual del
cursor, el cursor se va a mover un carácter a la derecha. En el modo
comando, los caracteres en tu teclado se usan para enviar comandos a vi,
en lugar de introducir caracteres literales en el texto. Uno de los tipos
de comando más importantes son los comandos de movimiento; vamos a echarle
un vistazo a algunos.
3.
Moviéndose
Moviéndose en vi, primera parte
Cuando está en modo comando, puede usar las teclas
h,j,k y l para mover el cursor a la izquierda,
abajo, arriba y derecha respectivamente. Si esta usando una versión
moderna de vi, también puede usar las teclas de cursor para este
propósito. Las teclas h,j,k y l son prácticas
porque, una vez se haya acostumbrado a ellas, será capaz de moverse
por el archivo sin tener que mover sus dedos de la misma linea del
teclado. Intentw usar h,j,k y l y las teclas
de cursor para moverse por el archivo de texto. Intente ahora apretar
h hasta llegar al principio de una línea. Observe que vi no mueve
el cursor al final de la línea anterior pulsando h. De la misma
forma, no puede situar el cursor al principio de la siguiente linea
llegando al final de la linea actual presionando l.
Moviéndose en vi, segunda parte
El editor vi posee atajos especiales para ir al principio o al final de la
linea actual. Puede usar 0 (cero) para saltar al primer carácter
de una linea, y $ para saltar al último carácter. Pruébelos y
observe como funcionan. La gran cantidad de comandos de movimiento que
posee vi lo convierten en un excelente paginador (un "pager" como los
comandos more o less.) Usar vi como paginador también le ayudará a
aprender todos los comandos de movimiento más rápidamente.
También puede usar <CTR>F y <CTR>B para moverse
una página adelante o atrás. Las versiones modernas de vi (como vim)
permiten también usar las teclas Repág y AvPag para este fin.
Moviéndose entre palabras, primera parte
Vi también le permite moverse una palabra a la derecha o a la izquierda.
Para situar el cursor en el primer carácter de la siguiente
palabra, pulse w. Para moverse al último carácter de la
siguiente palabra, pulse e. Para moverse al primer carácter de la
palabra anterior, pulse b. Juegue con esto.
Moviéndose entre palabras, segunda parte
Después de jugar un poco con los comandos de movimiento entre palabras,
se habrá dado cuenta de que vi considera palabras tipo foo-bar-oni,
como ¡cinco palabras separadas! Ésto es así por defecto: vi delimita las
palabras por espacios o signos de puntuación. foo-bar-oni es,
por lo tanto, considerada como cinco palabras: foo, -,
bar, - y oni.
A veces, este comportamiento es el que queremos, otras no.
Afortunadamente, vi también entiende el concepto de "palabra grande".
Vi delimita las "palabras grandes" únicamente mediante espacios o saltos
de lineae. Ésto significa que foo-bar-oni es considerada como
cinco palabras vi, y a su vez, se considera una única "palabra grande" vi.
Moviéndose entre palabras, tercera parte
Para saltar hacia la siguiente "palabra grande" o hacia la anterior,
utilice los comandos de movimiento entre palabras en mayúsculas.
Use W para saltar hacia el primer carácter de la siguiente
"palabra grande", E para saltar al último carácter de la siguiente
"palabra grande", y B para saltar al primer carácter de la
"palabra grande" anterior. Pruebe todos estos comandos y compare los
resultados de los comandos de movimiento entre palabras con los de
movimiento entre "palabras grandes" hasta comprender las diferencias.
Movimientos mayores
Nos queda por ver algunos comandos antes de empezar a realizar nuestra
hoja de trucos... Puede usar los caracteres ( y ) para
moverse hacia el principio de la siguiente frase o la anterior. También
puede usar { o } para saltar al principio del párrafo actual
o al del siguiente. Pruébelo.
4.
Saliendo
Ya hemos descubierto los comandos básicos de movimiento, pero todavía
quedan un montón de comandos que necesita conocer. Escribiendo :q
saldrá de vi. Si no funciona, seguramente se deberá a que, de alguna
forma, ha modificado el archivo accidentalmente. Para decirle a vi que
queremos salir y descartar todos los cambios, escribiremos :q!.
En estos momentos debería estar en la línea de comandos.
En vi,cualquier comando que empiece por : se conoce como comando
ex-mode. Ésto es así porque vi tiene un editor no visual integrado
llamado ex. Puede usarse de una forma muy parecida a sed para hacer
operaciones de modificación desde la línea. Además, puede usarse para salir,
como ya hemos visto. Si alguna vez presiona la tecla Q estando en
modo comando, se iniciará el modo ex. Si le ocurre esto alguna vez, se
enfrentará cara a cara con un símbolo de línea de comandos :, al pulsar
la tecla Intro, la pantalla entera se desplazará hacia arriba. Para volver
al modo normal de vi, simplemente teclee vi y pulse Intro.
5.
La Hoja de Trucos
El principio de la hoja de trucos
Hemos visto un montón de comandos, y ha llegado el momento de pasarlos a
nuestra hoja de trucos. Para la hoja de trucos necesitarás una hoja tipo
folio US o A4 (¡piense que vamos a poner una gran cantidad de información
en ella!) A continuación puede ver una foto de mi hoja de trucos después de
haber transcrito todos los comandos que hemos cubierto hasta ahora. Intente
seguir mi diseño, si es posible, de forma que podamos poner todo en una sola
hoja.
Ilustración 5.1: Hoja de trucos |
 |
vi misceláneo
Sigamos con nuestro aprendizaje rápido de comandos. En modo comando, puede
saltar a una linea en concreto tecleando G. Para saltar a la primera
linea de un fichero, teclea 1G. Observe que G está en
mayúsculas.
Si quiere saltar a la siguiente ocurrencia de una cadena de texto en
particular, teclee /<regexp> y presione enter.
Substituya <regexp> por la expresión regular que está buscando.
Si no sabe como usar expresiones regulares, no se preocupe -- escribir
/foo le llevará a la siguiente ocurrencia de foo. Solo
tendrá que tener cuidado cuando necesite referenciar literalmente los
caracteres ^, ., $ o \. Para estos
caracteres deberá poner una barra invertida (\) como prefijo, y
listo. Por ejemplo, /foo\.gif buscará la siguiente ocurrencia
de "foo.gif".
Para repetir la búsqueda hacia adelante, pulse n. Para repetir la
búsqueda hacia atrás, teclee N. Como siempre, pruebe estos
comandos en su propio editor vi. También puede teclear // para
repetir la última búsqueda.
6.
Guardando y Editando
Guardar y guardar como...
Hemos aprendido como usar el comando ex :q para salir de
vi. Si quiere salvar los cambios, teclee :w. Si lo que quiere
es guardar los cambios en otro archivo, escriba
:w nombrearchivo.txt para guardarlo como nombrearchivo.txt.
Si quiere guardar y salir, teclee :x o :wq.
En vim (al igual que en otros editores vi avanzados, como elvis), puede
tener múltiples buffers abiertos a la vez. Para abrir un archivo en un una
ventana nueva, escriba :sp nombrearchivo.txt.
El fichero nombrearchivo.txt aparecerá abierto para edición
en una nueva ventana dividida. Para cambiar de una ventana a la otra,
teclee <CTR>w<CTR>w (control-w dos veces). Cualquier
comando :q, :q!, :w y :x que use solo se
aplicará a la ventana actualmente activa.
Edición simple
Y llegó el momento de comenzar a aprender algunos de los comandos básicos
de edición. Los comandos que vamos a cubrir en esta sección se consideran
simples porque le mantienen en modo comando. Los comandos "complejos"
le ponen automáticamente en modo insertar -- un modo que le permite
introducir datos directamente desde el teclado. Lo veremos en breve.
Por el momento, sitúese por encima de algún carácter y presione x
varias veces. Verá que x elimina el carácter situado justo debajo del
cursor. Ahora, mueva el cursor al medio de un párrafo dentro de su archivo
de texto, y pulse J (en mayúsculas). Verá que el comando J
indica a vi que junte la siguiente linea con el final de la linea actual.
Ahora, sitúese encima de un carácter y presione r, luego escriba
un nuevo carácter; verá que el carácter original ha sido reemplazado. Para
acabar, sitúese en una linea cualquiera del archivo y escriba dd.
Observará que dd elimina la linea de texto actual.
Repitiendo y borrando
Puede repetir cualquier comando de edición pulsando la tecla .. Si
experimenta un poco, verá que tecleando dd... elimina cuatro lineas,
y J...... junta cuatro lineas. Como siempre, vi nos proporciona
otro atajo útil.
Para borrar texto, puede usar el comando d combinado con cualquier
comando de movimiento. Por ejemplo, dw eliminará el texto desde la
posición actual del cursor hasta el comienzo de la siguiente palabra;
d) eliminará hasta el final de la siguiente frase, y d}
eliminará lo que queda de párrafo. Experimente un poco con el comando
d y el resto de comandos de edición hasta que se sienta cómodo
con ellos.
¡Deshacer!
Ahora que ya hemos experimentado con el borrado, seria bueno aprender como
deshacer cualquier cambio. Presionando u, la versión original de vi
permitía deshacer el último cambio. Las versiones más actuales de vi, como
vim, le permiten presionar u repetidamente para ir deshaciendo los
cambios que haya podido hacer. Pruebe a combinar algunos comandos d
y u alternativamente.
Actualizar la hoja de trucos
¡Es el momento de actualizar la hoja de trucos! Después de añadir los
comandos que hemos aprendido hasta ahora, su hoja de trucos debería
parecerse a ésta:
Ilustración 6.1: Hoja de trucos con comandos de edición |
 |
7.
Modo Insertar
Hasta ahora, ha aprendido cómo moverse dentro de vi, realizar e/s de
archivos y algunas operaciones básicas de edición. De todas formas,
¡todavía no le he enseñado como introducir texto libremente! Lo he
hecho intencionadamente, porque el modo insertar de vi es un poco
complicado al principio. De todas formas, una vez se acostumbre al
modo insertar, su complejidad (y flexibilidad) se convertirán en una
ventaja.
Dentro del modo insertar de vi, podrá introducir texto directamente
en la pantalla de la misma forma que lo hace con otros editores visuales.
Una vez haya introducido sus modificaciones, puede pulsar la tecla Escape
volver al modo comando. Para entrar en modo insertar, presione
i o a. Al presionar i, su texto se insertará
delante del carácter actual, y si pulsa a, su texto se
añadirá justo después del carácter actual. Recuerde, debe
presionar <ESC> para volver al modo comando.
Ventajas del modo Insertar
Vaya probando los comandos a e i. Pulse tanto a como
i, escriba algo de texto, y luego pulse Escape para volver al modo
comando. Después de pulsar a o i, pruebe a pulsar
<Intro>, y mire que ocurre. Pruebe también a usar las teclas
de movimiento del cursor (flechas) y la tecla <Supr> para
deducir el uso del modo insertar. Usando las teclas de movimiento del
cursor y <Supr>, puede realizar bastantes tareas de edición
sin tener que cambiar varias veces del modo comando al modo insertar y
viceversa.
Opciones de Insertar
Ahora mostraremos otras formas prácticas de acceder al modo insertar.
Presione A (en mayúsculas) para empezar a añadir texto al
final de la línea actual, independientemente de la posición actual
del cursor en la línea. De la misma forma, pulse I (mayúscula)
para empezar a introducir texto al principio de la línea actual.
Pulse o para crear una nueva linea por debajo de la línea actual,
en la cual podrá introducir texto, y pulse O (mayúscula) para
crear una linea nueva por encima de la actual. Para reemplazar totalmente
la linea actual con una nueva, teclee cc. Para reemplazar todo
desde la posición actual hasta el final de la linea, teclee c$.
Para reemplazar todo desde la posición actual hasta el principio de la
línea, teclee c0.
Además de realizar una operación especial, cada uno de estos comandos le
pondrá en modo insertar. Después de introducir su texto, pulse
<Escape> para volver al modo comando.
Cambiar texto
Hemos usado un poco el comando c (cambiar) cuando hemos tecleado
cc, c0 y c$. cc es una forma especial de comando
de cambio, similar a dd. Los comandos c0 y c$ son
ejemplos de como usar el comando cambiar en combinación con los comandos de
movimiento. De la misma forma, c funciona de una forma parecida a
d, excepto que éste le deja en modo insertar para que pueda
entrar texto de reemplazo en la región recién eliminada. Pruebe a usar
varios comandos de movimiento con c y pruébelos con su archivo
(pista: cW, ce, c().
8.
Comandos Combinados
El editor vi se vuelve realmente potente cuando se comienza a
utilizar comandos combinados (comandos "combo"), como por ejemplo,
d{ y cw. Aparte de estos comandos, también puede combinar
un número con cualquier comando de movimiento, así por ejemplo 3w
indicará a vi que salte tres palabras a la derecha. Algunos comandos
"combo" más: 12b, 4j.
Vi, además de permitir combinaciones del tipo (número)(comando de
movimiento), también permite combinar d o c con un número o
con un comando de movimiento. Así, d3w eliminará las tres palabras
siguientes, d2j eliminará la siguiente línea y las dos siguientes,
etc. Pruebe a combinar varios combos con c y d para ver lo
potente y ágil que puede ser la edición con vi. Una vez asimile estos
comandos, será capaz de editar archivos a una velocidad increíble.
Actualizar la hoja de trucos
Ahora, actualizaremos de nuevo la hoja de trucos. Más o menos debería
parecerse a esto:
Ilustración 8.1: Hoja de trucos con comandos combinados |
 |
Características de productividad
Hasta ahora, hemos visto como movernos, guardar y salir, realizar
ediciones y borrados simples y usar el modo insertar. Con todo ésto en
la hoja, debería poder usar vi para realizar casi cualquier tarea.
Pese a ésto, vi tiene más comandos útiles. En ésta sección aprenderá a
cortar, copiar, pegar, buscar,
reemplazar y usar autoindentación. Todas éstas
posibilidades ayudarán a que vi sea un poco más divertido y productivo.
Modo Visual
La mejor forma para cortar y pegar es usar el modo visual, un modo
especial que ha sido añadido en versiones modernas de vi, como vim y elvis.
Puede considerar el modo visual como un modo de "resaltado de texto". Una
vez que el texto queda resaltado, se puede copiar o eliminar, para que
luego se pueda pegar. Si esta usando gvim, puede resaltar el texto
simplemente arrastrando el ratón con el botón izquierdo presionado sobre
una región de texto determinada:
Ilustración 8.2: VIM con texto resaltado |
 |
Además, puede, entrar en modo visual pulsando v (que es la única
opción que tendrá si utiliza vi desde la consola). A continuación mueva
el cursor usando los comandos de movimiento (normalmente las teclas de
movimiento), verá que puede resaltar una región de texto. Cuando la
región de texto que quiera esté resaltada, estará lista para ser cortada
o copiada.
Si quiere copiar el texto, pulse y (que proviene del término inglés
"yank"). Si está cortando el texto, pulse d. Volverá entonces al
modo comando. Ahora sitúese en la posición donde quiera insertar el texto
copiado o cortado, y pulse P para insertar el texto antes del
cursor, o p para insertarlo después. ¡Voilà, el copiado/cortado
se ha completado! Pruébelo varias veces antes de avanzar a la siguiente
sección.
Reemplazar texto
Para reemplazar patrones de texto, usamos el modo ex. Si quiere
reemplazar el primer patrón que aparece en la línea actual, escriba
:s/<regexp>/<reemplazo>/ y presione
<Intro>, sustituya <regexp> por el texto que
desea reemplazar y <reemplazo> por la cadena de texto con el que lo
va a sustituir. Para reemplazar todas las coincidencias en la línea
actual, teclee :s/<regexp>/<reemplazo>/g y pulse Intro.
Para reemplazar todas las ocurrencias de un patrón en su archivo (que
normalmente es lo que quiere), escriba
:%s/<regexp>/<reemplazo>/g. Si quiere realizar un
reemplazo global, pero haciendo que vi le pida confirmación de cada
reemplazo, teclee :%s/<regexp>/<reemplazo>/gc (la c
viene del inglés, "change", cambiar) y pulse <Intro>.
Indentación
Ël editor vi incluye soporte para autoindentación, ideal para editar código
fuente. La mayoría de las versiones modernas de vi (p.e. vim) tendrán
activado automáticamente el modo autoindentado cuando edite un archivo de
código fuente (por ejemplo un archivo .c). Cuando el autoindentado está
activo, puede usar <CTR>d (control-d) para indentar un nivel
hacia la izquierda y <CTR>t (control-t) para indentar a la
derecha un nivel. Si el autoindentado no se activa automáticamente, puede
hacerlo de forma manual con el comando ex :set autoindent.
Puedes también indicar a vi el tamaño de cada tabulación a su gusto
mediante el comando :set tabstop; :set tabstop=4 es bastante
popular.
La hoja de trucos definitiva
Y bien, ¡ya hemos llegado al final de éste tutorial de vi! Una vez añada
todos los comandos de edición avanzada a tu hoja de trucos, debería quedar
como la siguiente:
Ilustración 8.3: Hoja final de trucos |
 |
Tenga su hoja de trucos a mano, y empiece a usar vi para editar archivos y
escribir correos electrónicos. Use la hoja de trucos cuando la necesite;
verá que en una semana se sabrá casi todos los comandos de memoria y su
productividad con vi llegará a su máximo.
Si quieres usar vi como tu editor por defecto, utilice la orden
eselect:
Listado de Código 8.1: Usar vi como editor por defecto |
~# eselect editor list
Available targets for the EDITOR variable:
[1] /bin/nano
[2] /bin/ed
[3] /usr/bin/ex
[4] /usr/bin/vi
[ ] (free form)
~# eselect editor set 4
Setting EDITOR to /usr/bin/vi ...
>>> Regenerating /etc/ld.so.cache...
Run ". /etc/profile" to update the variable in your shell.
|
Si quiere definir esto únicamente para su usuario en lugar de definirlo
para todo el sistema, defina la variable EDITOR en su fichero
~/.bashrc:
Listado de Código 8.2: Definir vi como el editor por defecto del usuario |
~$ vi ~/.bashrc
export EDITOR="/usr/bin/vi"
|
Recursos
A continuación se muestran unos cuantos recursos que pueden resultarle
útiles para aprender más sobre vi:
Acerca de este documento
La versión original de este artículo fue publicada por primera vez en IBM
developerWoks, y es propiedad de Westtech Information Services. Este
documento es una versión actualizada del artículo original, y contiene varias
mejoras realizadas por el Equipo de Documentación de Gentoo.
|