Gentoo Logo

Aprendiendo vi - el método de la Hoja de Trucos

Contenido:

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

Fig. 1: screenshot

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

Fig. 1: Primera parte de la 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

Fig. 1: Hoja de trucos

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

Fig. 1: Hoja de trucos

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

Fig. 2: 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

Fig. 3: Hoja 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

(Establece EDITOR a tu editor preferido.)
#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.



Imprimir

Actualizado 21 de julio, 2005

Sumario: Esta guía te enseñará a usar vi mediante el uso de una hoja de trucos que servirá para agilizar el proceso de aprendizaje. Esta es la primera guia de vi orientada a principiantes.

Daniel Robbins
Author

Eric Stockbridge
Author

Benny Chuang
Editor

José Alberto Suárez López
Editor-es

John Christian Stoddart
Editor Es

José Luis Rivero
Editor Es

Jordi Molina
Traductor

Donate to support our development efforts.

Support OSL

Support OSL

Gentoo Centric Hosting: vr.org

VR Hosted

Tek Alchemy

Tek Alchemy

SevenL.net

SevenL.net

Global Netoptex Inc.

Global Netoptex Inc.

Linux World Expo

Linux World Expo

Copyright 2001-2008 Gentoo Foundation, Inc. Questions, Comments? Contact us.