Aprendiendo vi - el método de la Hoja de Trucos
1.
Empezando
Introducción
Ésta guia te 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 hacer de ti un buen usuario de vi sin que tengas que perder
mucho el tiempo. En este tutorial, aprenderás como moverte, editar texto,
usar el modo insertar, copiar y pegar texto así como usar extensiones útiles
de vim como el modo visual y la edición multi-ventana.
Si desconoces o no te sientes cómodo usando vi, quizás quieras leer
este tutorial y alcanzar la velocidad de la luz con 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, vas a tener que
memorizar unos cuantos. Ésto puede llevarte tiempo, y uno de los objetivos de
este tutorial es no quitarte demasiado tiempo. Así que, desde el principio,
tengo un reto -- ¿como lo hago para ayudarte a memorizar un montón de
comandos en poco tiempo?
Para superar el reto, conforme vayamos avanzando en este tutorial, vamos a ir
haciendo gradualmente una hoja de trucos para vi. Esta hoja va a contener
todos los comandos vi importantes. Una vez hayas completado este tutorial,
podrás acudir a tu hoja de trucos si te has olvidado de un comando en
particular. Conforme pase el tiempo, irás memorizando los comandos, y cada
vez dependerás menos de la hoja. ¡Vas a aprender a usar vi de la forma más
rápida nunca conocida!
El proceso de aprendizaje
En ésta guia voy a usar varias técnicas para ayudarte a aprender. Primero,
voy a describirte como funcionan ciertos comandos en particular, como era de
esperar. Después, voy a pedirte que pruebes esos comandos directamente en vi
(para que practiques), entonces te diré que apuntes esos comandos en tu hoja
de trucos (para que puedas consultarlo más tarde). Si quieres aprender vi
rápidamente, es muy importante que sigas todos esos pasos. Probar un comando
y transcribirlo después a tu hoja de trucos te ayudará a memorizar ese
comando.
Introduciendo a vim
Existen muchas versiones de vi, yo os voy a enseñar como usar una versión de
vi llamada vim. 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 quieres instalar vim, puedes obtenerlo de
www.vim.org. Además de una linea de
comandos vi mejorada, vim también viene con gvim, un editor amigable
en modo gráfico que puede ser configurado para usar las excelentes librerías
para GUIs GTK+. A continuación puedes ver una captura de pantalla de gvim en
mi sistema:
Ilustración 1.1: Captura de GVIM |
 |
Si eres un novato, prueba de ejecutar gvim en tu sistema. Usar vi desde un
GUI puede hacer la vida más fácil a los principiantes.
2.
Primeros pasos
Escoje un archivo
Antes de usar vi para editar archivos, necesitas saber como usar vi para
moverte por un archivo. vi tiene muchos comandos de desplazamiento, y vamos a
ver unos cuantos de ellos. Para esta parte del tutorial, busca un archivo de
texto no importante y ábrelo en vi escribiendo:
Listado de Código 2.1: Cargar un archivo en vi |
$ vi myfile.txt
|
Si tienes instalado vim, escribe vim myfile.txt. Si prefieres usar
gvim, teclea gvim myfile.txt. myfile.txt debe ser el
nombre de un archivo de texto en tu sistema.
Dentro de vi
Después de que vi cargue, deberías ver una parte del archivo de texto que
cargaste en tu pantalla. Felicidades -- estás 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, más que para introducir caracteres
literales en el texto. Uno de los tipos de comando más esenciales son los
comandos de movimiento; vamos a echarle un vistazo a alguno.
3.
Moviéndote
Moviéndote en vi, primera parte
Cuando estás en modo comando, puedes usar las teclas
h,j,k y l para mover el cursor izquierda, abajo,
arriba y derecha respectivamente. Si estas usando una versión moderna de vi,
también puedes usar las teclas de cursor. Las teclas
h,j,k y l son prácticas porque, una vez te hayas
acostumbrado a ellas, serás capaz de moverte por el archivo sin tener que
mover tus dedos de la misma linea del teclado. Intenta usar
h,j,k y l y las teclas de cursor para moverte por
el archivo de texto. Intenta ahora apretar h hasta llegar al principio
de una línea. Observa que vi no te sitúa a la cola de la línea anterior
presionando h. De la misma forma, no puedes situarte al principio de
la siguiente linea llegando al final de la linea actual presionando l.
Moviéndote en vi, segunda parte
vi posee atajos especiales para ir al principio o al final de la linea
actual. Puedes usar 0 (cero) para saltar al primer carácter de una
linea, y $ para saltar al último carácter. Pruébalos y observa como
funcionan. La gran cantidad de comandos de movimiento que posee vi lo
convierten en un gran "pager" (como los comandos more o less.) Usar vi como
pager también te ayudará a aprender todos los comandos de movimiento más
rápidamente.
También puedes usar <CTR>F y <CTR>B para moverte
una página adelante o atrás. Las versiones modernas de vi (como vim) permiten
también usar las teclas PGUP y PGDOWN para este fin.
Moviéndote entre palabras, parte 1
vi también te permite moverte una palabra a la derecha o a la izquierda. Para
situar el cursor en el primer carácter de la siguiente palabra, pulsa
w. Para moverte al último carácter de la siguiente palabra,
pulsa e. Para moverte al primer carácter de la palabra
anterior, pulsa b. Juega con esto.
Moviéndote entre palabras, parte 2
Después de jugar un poco con los comandos de movimiento entre palabras, te
habrás 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" mediante espacios o saltos de linea solamente. Ésto
significa que foo-bar-oni es considerada como cinco palabras vi, y a
su vez, se considera una única "palabra grande" vi.
Moviéndote entre palabras, parte 3
Para saltar hacia la siguiente "palabra grande" o hacia la anterior, usa los
comandos de movimiento entre palabras en mayúsculas. Usa 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. Prueba todos
éstos comandos y compara los resultados de los comandos de movimiento entre
palabras con los de movimiento entre "palabras grandes" hasta que entiendas
las diferencias.
Movimientos mayores
Nos quedan pocos comandos por ver antes de empezar a ponerlos juntos en
nuestra hoja de trucos... Puedes usar los caracteres ( y ) para
moverte hacia el principio de la siguiente o anterior frase. También puedes
usar { o } para saltar al principio del párrafo actual o al del
siguiente. Pruébalo.
4.
Saliendo
Ya hemos descubierto los comandos básicos de movimiento, pero todavía hay
otro montón de comandos que necesitas saber. Escribiendo :q saldrás de
vi. Si no funciona, seguramente se deberá a que, de alguna forma, has
modificado el archivo accidentalmente. Para decirle a vi que queremos salir y
descartar todos los cambios, escribiremos :q!. En estos momentos
deberías estar en la línea de comandos.
En vi, se conoce a cualquier comando que empiece por : 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 linea. Además, puede usarse para salir,
como ya hemos visto. Si alguna vez presionas la tecla Q estando en
modo comando, serás llevado al modo ex. Si te ocurre esto alguna vez, te
enfrentarás cara a cara con un prompt :, apretar enter desplazará la pantalla
entera hacia arriba. Para volver al modo normal de vi, simplemente teclea vi
y pulsa enter.
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 (¡piensa que vamos a poner una gran cantidad de información en
ella!) A continuación puedes ver una foto de mi hoja de trucos después de
haber transcrito todos los comandos que hemos cubierto hasta ahora. Intenta
imitar 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, puedes
saltar a una linea en concreto tecleando G. Para saltar a la primera
linea de un fichero, teclea 1G. Observa que G está en
mayúsculas.
Si quieres saltar a la siguiente aparición de una cadena de texto en
particular, teclea /<regexp> y presiona enter. Substituye
<regexp> por la expresión regular que estás buscando. Si no sabes como
usar expresiones regulares, no te preocupes -- escribir /foo te
llevará a la siguiente ocurrencia de foo. Sólo tendrás que tener
cuidado cuando necesites referenciar literalmente los caracteres ^,
., $ o \. Para estos caracteres deberás poner una contra
barra (\) como prefijo, y listo. Por ejemplo, /foo\.gif buscará
la siguiente ocurrencia de "foo.gif".
Para repetir la búsqueda hacia adelante, presiona n. Para repetir la
búsqueda hacia atrás, teclea N. Como siempre, prueba estos comandos en
tu propio editor vi. También puedes 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
quieres salvar los cambios, teclea :w. Si lo que quieres es guardar
los cambios en otro archivo, escribe :w nombrearchivo.txt para
guardarlo como nombrearchivo.txt. Si quieres guardar y salir, teclea
:x o :wq.
En vim (al igual que en otros editores vi avanzados, como elvis), puedes
tener múltiples buffers abiertos a la vez. Para abrir un archivo en un una
ventana nueva, escribe :sp filename.txt. filename.txt
aparecerá abierto para edición en una nueva ventana dividida. Para cambiar de
una ventana a la otra, teclea <CTR>w<CTR>w (control-w dos
veces). Cualquier comando :q, :q!, :w y :x que
uses 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 te mantienen en modo comando. Los comandos "complejos"
te ponen automáticamente en modo insertar -- un modo que te permite entrar
datos directamente desde el teclado. Lo veremos en breve.
Por el momento, sitúate por encima de algún carácter y presiona x
varias veces. Verás que x elimina el carácter situado justo debajo del
cursor. Ahora, muévete al medio de un párrafo dentro de tu archivo de texto,
y pulsa J (en mayúsculas). Verás que el comando J indica a vi
que junte la siguiente linea con el final de la linea actual. Ahora, situate
encima de un carácter y presiona r, luego escribe un nuevo carácter;
verás que el carácter original ha sido reemplazado. Para acabar, situate en
una linea cualquiera del archivo y escribe dd. Observarás que
dd elimina la linea de texto actual.
Repitiendo y borrando
Puedes repetir cualquier comando de edición pulsando la tecla .. Si
experimentas un poco, verás que tecleando dd... eliminas 4 lineas, y
J...... junta 4 lineas. Como siempre, vi nos proporciona otro atajo
útil :)
Para borrar texto, puedes usar el comando d combinado con cualquier
comando de movimiento. Por ejemplo, dw eliminará el texto desde la
posición actual 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. Experimenta un poco con el comando d y el resto de
comandos de edición hasta que te sientas 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, te permiten presionar u repetidamente para ir deshaciendo los
cambios que hayas podido hacer. Prueba de combinar algunos comandos d
y u alternativamente.
Actualizando la hoja de trucos
Hora de actualizar la hoja de trucos! Después de añadir los comandos que
hemos aprendido hasta ahora, tu 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, has aprendido cómo moverte dentro de vi, realizar e/s de
archivos y algunas operaciones básicas de edición. De todas formas, ¡todavía
no te 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 te acostumbres al modo insertar, su
complejidad (y flexibilidad) se convertirán en una ventaja.
Dentro del modo insertar de vi, podrás introducir texto directamente
en la pantalla de la misma forma que lo haces con otros editores visuales.
Una vez hayas introducido tus modificaciones, puedes presionar escape para
volver al modo comando. Para entrar en modo insertar, presiona
i o a. Al presionar i, tu texto será insertado
delante del carácter actual, y si pulsas a, tu texto sera
añadido justo después del carácter actual. Recuerda, debes presionar
<ESC> para volver al modo comando.
Ventajas del modo Insertar
Ves probando los comandos a y i. Pulsa tanto a como
i, escribe algo de texto, y luego pulsa escape para volver al modo
comando. Después de pulsar a o i, prueba de darle a
<ENTER>, y mira que ocurre. Prueba también a usar las teclas
cursor (flechas) y <DEL> para deducir el uso del modo insertar.
Usando las teclas cursor y <DEL>, puedes realizar bastantes
tareas de edición sin tener que cambiar varias veces de modo comando a modo
insertar y viceversa.
Opciones de Insertar
Aquí tienes otras formas prácticas de acceder al modo Insertar. Presiona
A (en mayúsculas) para empezar a añadir texto al final de la
línea actual, independientemente de tu posición actual en ésa línea. De la
misma forma, pulsa I (mayúscula) para empezar a introducir texto al
principio de la línea actual. Pulsa o para crear una nueva
linea por debajo de la línea actual, en la cual podrás introducir texto, y
pulsa O (mayúscula) para crear una linea nueva por encima de la
actual. Para reemplazar totalmente la linea actual con una nueva, teclea
cc. Para reemplazar todo desde la posición actual hasta el final de la
linea, teclea c$. Para reemplazar todo desde la posición actual hasta
el principio de la línea, teclea c0.
Además de realizar una operación especial, cada uno de estos comandos te
pondrá en Modo Insertar. Después de introducir tu texto, pulsa
<ESC> para volver al modo comando.
Cambiando texto
Hemos usado el comando c (cambiar) por encima 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
desplazamiento. De la misma forma, c funciona de una forma parecida a
d, exceptuando que éste te deja en Modo Insertar para que puedas
entrar texto de reemplazo en la región recién eliminada. Prueba a usar varios
comandos de desplazamiento con c y pruébalos con tu archivo (pista:
cW, ce, c( .)
8.
Comandos Combinados
vi se vuelve realmente potente cuando comienzas a usar comandos
combinados (comandos "combo"), como por ejemplo, d{ y cw. A
parte de estos comandos, también puedes combinar un número con cualquier
comando de movimiento, así por ejemplo 3w indicará a vi que salte tres
palabras a la derecha. A continuación te muestro algunos ejemplos más de
comandos "combo": 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 3 palabras
siguientes, d2j eliminará la siguiente línea y las dos siguientes,
etc. Prueba a combinar varios combos con c y d para ver lo
potente y ágil que puede ser la edición con vi. Una vez asimiles estos
comandos, serás capaz de editar archivos a una velocidad increíble.
Actualizando la hoja de trucos
Hora de actualizar 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, salvar y salir, realizar ediciones y
borrados simples y usar el modo insertar. Con todo ésto en la hoja, deberías
ser capaz de usar vi para realizar casi cualquier tarea.
Pese a ésto, vi tiene más comandos útiles. En ésta sección aprenderás como
cortar, copiar, pegar, buscar, reemplazar
y usar autoindentación. Todas éstas posibilidades ayudarán a hacer a
vi 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.
Puedes considerar el modo visual como un modo de "resaltado de texto". Una
vez que el texto queda resaltado, puede ser copiado o eliminado, para ser
pegado después. Si estas usando gvim, puedes 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 |
 |
Puedes entrar en modo visual pulsando v (que es la única opción que
tendrás si usas vi desde la consola.) Entonces mueve el cursor usando los
comandos de movimiento (o más típicamente, las teclas de desplazamiento),
verás que puedes resaltar una región de texto. Cuando la región de texto que
quieras esté resaltada, estará lista para ser cortada o copiada.
Si quieres copiar el texto, pulsa y (que proviene del término inglés
"yank"). Si estás cortando el texto, pulsa d. Volverás entonces al
modo comando. Ahora situate en la posición donde quieres insertar el texto
copiado o cortado, y pulsa P para insertar el texto antes del cursor,
o p para insertarlo después. Voilà! El copiado/cortado está completo!
Pruébalo varias veces antes de avanzar a la siguiente sección.
Reemplazando texto
Para reemplazar patrones de texto, usamos el modo ex. Si quieres
reemplazar el primer patrón que aparece en la línea actual, escribe
:s/<regexp>/<reemplazo>/ y presiona <ENTER>,
substituye <regexp> por el texto que quieres substituir y
<reemplazo> por la cadena con el que lo quieres substituir. Para
reemplazar todas las coincidencias en la línea actual, teclea
:s/<regexp>/<reemplazo>/g y pulsa enter. Para reemplazar
todas las ocurrencias de un patrón en tu archivo (que normalmente es lo que
quieres), escribe :%s/<regexp>/<reemplazo>/g. Si quieres
realizar un reemplazo global, pero haciendo que vi te confirme cada vez cada
cambio, teclea :%s/<regexp>/<reemplazo>/gc (la c viene del
inglés, "change", cambiar) y pulsa <ENTER>.
Indentación
vi incluye soporte para autoindentación, ideal para editar código fuente. La
mayoría de las versiones modernas de vi (p.e. vim) activarán automáticamente
el modo autoindentado cuando edites un archivo de código fuente (cómo por
ejemplo un archivo .c). Cuando el autoindentado está activo, puedes 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, puedes hacerlo de forma manual
con el comando ex :set autoindent. Puedes también indicar a vi
el tamaño de cada tabulación a tu 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ñadas
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 |
 |
Ten tu hoja de trucos a mano, y empieza a usar vi para editar archivos y
escribir correos electrónicos. Usa la hoja de trucos cuando la necesites;
verás que en una semana te sabrás casi todos los comandos de memoria y tu
productividad con vi llegará a su máximo.
Si quieres usar vi como tu editor por defecto haz el siguiente cambio en
/etc/rc.conf:
Listado de Código 8.1: Usar vi como editor por defecto |
#EDITOR="/bin/nano"
EDITOR="/usr/bin/vim"
#EDITOR="/usr/bin/emacs"
|
Recursos
A continuación tienes unos cuantos recursos que pueden resultarte útiles para
aprender más sobre vi:
Acerca de éste 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.
|