Documenti di Didattica
Documenti di Professioni
Documenti di Cultura
Editor vi.
Uso bsico de vi Modos de vi Gua de Supervivencia Uso avanzado de vi Modo Comando Modo Texto Modo "ex" o ltima lnea Tipos de Terminal Preguntas y Ejercicios Bibliografa y Referencias
modo comando: las teclas ejecutan acciones que permiten desplazar el cursor, recorrer el archivo, ejecutar comandos de manejo del texto y salir del editor. Es el modo inicial de vi. modo texto o modo insercin: las teclas ingresan caracteres en el texto. modo ltima lnea o ex: las teclas se usan para escribir comandos en la ltima lnea al final de la pantalla.
Gua de supervivencia. Con unos pocos comandos bsicos se puede ya trabajar en vi editando y salvando un texto:
vi arch1 arranca en modo comando editando el archivo arch1 i inserta texto a la izquierda del cursor a agrega texto a la derecha del cursor ESC vuelve a modo comando x borra el caracter bajo el cursor dd borra una lnea h o flecha izquierda mueve el cursor un caracter a la izquierda j o flecha abajo mueve el cursor una lnea hacia abajo k o flecha arriba mueve el cursor una lnea hacia arriba l o flecha derecha mueve el cursor un caracter a la derecha :w salva el archivo (graba en disco) :q sale del editor (debe salvarse primero)
Confundir un modo con otro la de mayor dificultades para el manejo de vi. Puede activarse un indicador de modo escribiendo
:set showmode
Esto hace aparecer una leyenda que indica si se est en modo comando o insercin. Modo Comando. El editor vi, al igual que todo UNIX, diferencia maysculas y minsculas. Confundir un comando en minscula digitando uno en mayscula suele tener consecuencias catastrficas. Se aconseja evitar sistemticamente el uso de la traba de maysculas; mantener el teclado en minsculas. Nmeros multiplicadores. Muchos comandos aceptan un nmero multiplicador antes del comando. La accin es idntica a invocar el comando tantas veces como indica el multiplicador. Ejemplos:
10j
copia 5 lneas y las retiene para luego pegar. Ejemplos de manejo. Los siguientes ejemplos de manejo asumen que el editor se encuentra en modo comando.
flechas h j k l itextoESC x dw dd 3dd u ZZ :q!ENTER 3Y :6r arch3 mueven el cursor (si el terminal lo permite) mueven el cursor (igual que las flechas) inserta la palabra "texto" y vuelve a comando borra el caracter sobre el cursor borra una palabra borra una lnea borra las 3 lneas siguientes deshace ltimo cambio graba cambios y sale de vi sale de vi sin grabar cambios busca la expresin indicada copia 3 lneas para luego pegar inserta debajo de la lne 6 el archivo arch3
/expresinENTER
mover en distintas direcciones una posicin hacia la izquierda una posicin hacia la derecha una lnea hacia arriba una lnea hacia abajo fin de lnea principio de lnea comienzo del archivo fin del archivo lnea nmero 18 mostrar nmero de lnea actual comienzo de la palabra siguiente fin de la palabra siguiente fin de la palabra siguiente antes de espacio principio de la palabra anterior primera palabra de la lnea hasta el parntesis que aparea parte superior de la pantalla parte inferior de la pantalla al medio de la pantalla cursor a la columna 23
Control de pantalla.
Ctrl-f Ctrl-b Ctrl-l Ctrl-d Ctrl-u una pantalla adelante una pantalla atrs redibujar la pantalla media pantalla adelante media pantalla atrs
Borrar
x dd D dw borrar caracter bajo el cursor borrar lnea, queda guardada borrar desde cursor a fin de lnea borrar desde cursor a fin de palabra
d$ d0
borrar desde cursor a fin de lnea borrar desde cursor a principio de lnea
Copiar y pegar
Y o yy P p yw y$ "ayy o "aY 'a' "ayw "ap "aP "bdd "bdw copiar lnea pegar antes del cursor pegar despus del cursor copiar palabra copiar de cursor a fin de lnea copiar lnea en buffer llamado 'a' copiar palabra en buffer llamado pegar desde buffer 'a', a la derecha del cursor pegar desde buffer 'a', a la izquierda del cursor borrar lnea y guardar en buffer 'b' borrar palabra y guardar en buffer 'b'
Bsqueda
/str ?str n N fc Fc tc Tc ; , buscar hacia adelante cadena de caracteres 'str' buscar hacia atrs cadena de caracteres 'str' repetir ltimo comando / o ? repetir ltimo comando / o ? para el otro lado buscar el siguiente caracter 'c' en la lnea buscar el anterior caracter 'c' en la lnea ir al caracter anterior al siguiente 'c' ir al caracter posterior al precedente 'c' repetir el ltimo comando f, F, t, o T ltimo comando f, F, t, o T para el otro ladoLa
cadena a buscar
en / o ? puede ser una expresin regular. La accin de f, F, t y T alcanza slo a la lnea actual; si el caracter buscado no est en esa lnea el cursor no se mueve. Reemplazo Estos comandos admiten multiplicadores: un nmero delante del comando. Al dar un comando de reemplazo el editor coloca un smbolo $ en donde termina el pedido de reemplazo. El usuario escribe normalmente, sobreescribiendo, hasta donde necesite, y sale con ESC. Estos comandos admiten multiplicadores: 3cw abre un rea de reemplazo para 3 palabras.
c cw C o c$ c0 reemplaza reemplaza reemplaza reemplaza caracteres palabras hasta el fin de lnea desde el comienzo de lnea
Otros
J ZZ u U
unir dos lneas en una grabar cambios si los hubo y salir deshacer ltima accin deshacer todos los cambios en una lnea
Modo Texto.
BS ESC borrar caracter hacia la izquierda pasar a modo comando
Mover
:1 :15 :$ mueve a lnea 1 mueve a lnea 15 mueve a ltima lnea
Opciones
:set :set :set :set :set nu nonu showmode noshowmode cambio de opciones mostrar nmeros de lnea no mostrar nmeros de lnea mostrar modo actual de vi no mostrar modo actual de vi
indican lneas en el archivo; <buscar> y <reemplazar> son cadenas de caracteres o expresiones regulares; / es un separador, s (sustituir) y g (global) son letras de comando para el manejo de expresiones regulares.
:1,$s/Martes/martes/g
cambia ayuda por ayudando desde lnea actual hasta la 5a. lnea.
Tipo de terminal. es independiente del tipo de terminal, pero la variable de ambiente TERM debe estar fijada correctamente. Si no se conoce o no existe el tipo exacto de terminal, en la mayora de los terminales remotos el tipo ansi da buenos resultados. Para fijar el terminal en tipo ansi, digitar
vi TERM=ansi;export TERM
Algunos comandos, especialmente more y a veces vi, pueden no responder bien en la terminal o el emulador que se est usando. En estos casos, puede usarse Ctrl-L para refrescar la pantalla.
Vctor A. Gonzlez Barbone vagonbar en fing edu uy Instituto de Ingeniera Elctrica - Facultad de Ingeniera - Montevideo, Uruguay.