Albergue de Náufragos
Uso del vi

Las páginas del Albergue

Aclaraciones necesarias:
Si Ud. es un usuario del MS-DOS y/o el MS-Windows 3.x, le recuerdo, por si no lo sabe aún, que el UNIX, como el Windows 9.x y otros sistemas operativos, hace diferencia entre las mayúsculas y las minúsculas, por lo que, antes de internarse en este interesante ambiente, le recomiendo tenerlo en cuenta.
Por otro lado, esto no intenta ser un manual sobre el vi (ya que hay gente que ha escrito libros enteros sobre su uso) sino una simple enumeración de los comandos y las opciones más simples que nos permite este programa. Para mayor información te sugiero la lectura de los libros y manuales relativos al tema.
Los diversos comandos y opciones que detallo a continuación los he probado personalmente en las versiones UNIX V Release 4 (de Unisys) y HP-UX versión 9.0, 10.0 y 11.0 (de Hewlett Packard). Agradeceré cualquier sugerencia, crítica o corrección que me puedas hacer llegar para mejorar esta página o cualquier otra que forme parte de mi Albergue Transitorio de Ideas. Desde ya, muchas gracias.

Supongamos que usted tiene ante sus ojos una de las tantas versiones del UNIX sin interfaz gráfica. Y supongamos que necesita editar un archivo de texto. Una de las primeras cosas que puede intentar es ejecutar el siguiente comando:

vi archivo

Si el sistema le responde, será un afortunado usuario del vi (si no se ejecuta este programa, lamento informarle que deberá usar el ed).
El vi es un editor de textos. Se puede observar en la pantalla una ventana del archivo que se esta editando, y los cambios que se hagan se veran en pantalla.

La sintaxis es:

vi archivo y el archivo se editará en pantalla.

Para las distintas opciones que iré detallando más abajo, hay que apretar primero Esc, tanto para comenzar a usar la opción como para terminar la anterior.

Volver arriba

Para insertar:

I Inserta texto al comienzo de la línea.
a Inserta texto despues del cursor.
A Inserta texto al final de la línea.
o Inserta lineas de texto despues de la línea actual.
O Inserta lineas de texto antes de la línea actual.

Volver arriba

Para hacer correcciones:

x Borra un caracter.
nx Borra n caracteres.
rx Reemplaza el caracter en donde esta el cursor por X.
dw Borra una palabra.
ndw Borra n palabras.
dd Borra una línea.
ndd Borra n líneas.
%d Borra todo desde la primera línea hasta el final (es igual a :1,$d)
D Borra lo que esta entre el cursor y el final de la línea.
cw Cambia una palabra por otra.
cc Cambia una linea por otra.
R Reemplaza el caracter por una cadena finalizada con Esc.
S Reemplaza la línea.

Volver arriba

Movimientos:

Ctrl-d Scroll down.
Ctrl-u Scroll up.
Ctrl-e Sube una línea.
Ctrl-y Baja una línea.
Ctrl-f Próxima página (Forward).
Ctrl-b Página previa (Backward).
w Avanza el cursor a la proxima palabra.
b Retrocede el cursor a la palabra anterior.
e Mueve el cursor al final de la palabra.
^ Mueve el cursor al principio de la línea.
$ Mueve el cursor al final de la línea.
+ Mueve el cursor al principio de la línea siguiente.
- Mueve el cursor al principio de la línea anterior.
H Mueve el cursor a la primera línea de la pantalla (Home).
M Mueve el cursor a la mitad de la pantalla.
L Mueve el cursor a la última línea de la pantalla.
númeroG Mueve el cursor a cualquier línea del archivo (10G a la línea 10, G al final del archivo).
Ctrl-G Muestra nombre del archivo, número de línea, cantidad de líneas, etc).

Volver arriba

Salidas:

:x,y w archivo Escribe las líneas entre x e y en el archivo dado.
:w Graba.
:w archivo Graba con ese nombre de archivo.
:q Sale (antes se debe grabar).
:q! Sale sin grabar los cambios.
:wq Graba y sale.
:x Graba y sale.
:zz Graba y sale.
:e! Recupera lo ultimo que se hizo (Undo total).
:e archivo Abre un segundo archivo sin cerrar el que tenemos en pantalla.
:e# Vuelve al primer archivo.

Volver arriba

Mover y pegar texto:

:r archivo Lee un archivo y lo pega.
nyy Copia n líneas.
y Guarda texto en un buffer sin nombre.
ytx Guarda en un buffer el texto que esta entre el cursor y el caracter x.
Y Guarda en un buffer la línea completa.
numero Y Guarda en un buffer el numero de líneas solicitado.
p Coloca lo que está en el buffer despues del cursor.
P Coloca lo que está en el buffer antes del cursor.

Se puede poner nombre al buffer precediendo el comando por " y cualquier letra. Se pueden abrir hasta 9 buffers.

Volver arriba

Repetir y deshacer cambios:

u Deshace el último cambio.
U Vuelve la línea a su estado original.
. Repite el ultimo cambio.
t (to) Hasta (sin incluír).
dtx Borra desde el cursor hasta el caracter x.
f (find) Busca la primera instancia del caracter.
dfx Borra x solo en la línea.

Volver arriba

Comandos desde vi:

:! comando Ejecuta el comando.
:!ls -l Ejecuta el comando y lo lee.
:r! comando Lee la salida del comando.
:& Repite el último comando :S efectuado.

Volver arriba

Sustituciones:

:S/vieja cadena/nueva cadena/opciones Sustituye una cadena por otra. Si apretamos n, sustituye la siguiente cadena vieja por la nueva.

Volver arriba

Opciones:

/g Cambia todas las apariciones de la vieja cadena en la línea.
/c Solicita confirmación de cada cambio.
/p Imprime las líneas corregidas.
/gc Lo hace todo globalmente pero pide confirmación ante cada sustitución.
:& Repite el último comando :S efectuado.

También se puede dar la orden como una expresión regular (ver expresiones regulares), por ejemplo así:

:1,$ s/cadena vieja/cadena nueva/gc

Donde 1,$ le dice que lea el texto desde el primer caracter hasta el final ($) y que vaya sustituyendo a la cadena vieja por la cadena nueva, pero pidiendo confirmación cada vez que lo vaya a hacer.

Volver a la página de Linux y UNIX.

Volver arriba

Esta página adhiere a la campaña "Se ve mejor con cualquier navegador - Campaña para un WWW no específico de un navegador (http://www.anybrowser.org/campaign/anybrowser_es.html)".
Por favor, hágame saber si ha encontrado algo en mi sitio que no funcione con su navegador (especifíqueme qué navegador está usando y qué no funcionó) y trataré de arreglarlo.
Se ve mejor con cualquier navegador - Enlace a página de CampañaD

Todos los nombres propios, distintivos, logos, marcas, sistemas, hardware, equipos, etc. que aparecen en estas páginas web enlazando a sitios, son marcas registradas de sus respectivas compañias, empresas, organizaciones y/o propietarios. El hecho que aparezcan no implica ningún tipo de compromiso monetario o moral de dichas organizaciones con el autor de éstas páginas, ya que fueron colocadas por éste por simple gusto personal, como colaboración desinteresada para promocionar dichos sitios.

Webmaster: Claudio Segovia - Buenos Aires, San Justo y Lago Puelo - Argentina
Nacimiento del Albergue: 7 de enero de 1999
Ultima actualización: Jueves 28 de abril de 2007
Dirección de correo electrónico: claudiosegovia@gmail.com

A Ema, Matilde y Cecilia