Gentoo Logo

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

Contenido:

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

Fig. 1: screenshot

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

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

Fig. 1: Hoja de trucos

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

Fig. 1: Hoja de trucos

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

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

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



Imprimir

Página actualizada 15 de agosto, 2011

Esta traducción ha dejado de tener soporte

Sumario: Esta guía le 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
Autor

Eric Stockbridge
Autor

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.

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