420304785.doc http://club.telepolis.com/jagar1/Unix/Vi.htm EDITOR VI El editor vi es el editor por excelencia de UNIX. Es bastante potente y complicado de manejar a pleno rendimiento, debido a la gran cantidad de opciones que tiene, pero es fácil dar los primeros pasos e ir avanzando poco a poco. Es difícil de utilizar al principio, pero puede llegar a convertirse en el más cómodo y rápido. En UNIX existen otros editores más potentes, con entornos de trabajo más amigables, otros más sencillos de manejar, pero el único editor que está en todas las versiones y se maneja igual es el vi. La sintaxis del comando vi es, al igual que la de cualquier comando UNIX: vi [opciones] archivo Entre las opciones más importantes se pueden destacar: -r : Recupera la copia del archivo que existe en los directorios temporales. Es útil en caso de que se haya apagado el terminal sin haber salvado el texto. -c : Ejecuta el comando, de vi, que se indica a continuación. Es útil para posicionarse en algún punto del archivo En vi existen 3 modos de trabajo: Modo comando: cada tecla tiene un significado, y se puede desplazar el cursor, copiar, pegar, mover, borrar, etc. Hay que tener mucho cuidado, pues un comando en minúsculas o en mayúsculas tienen efectos muy diferentes. Modo texto: se emplea para añadir o modificar el texto del documento. Modo ex: inserción de comandos del editor de líneas ex. Se emplea para cambios masivos en el documento. Página 1 de 9 420304785.doc http://club.telepolis.com/jagar1/Unix/Vi.htm En las páginas siguientes se detallan los comandos más importantes de vi clasificados según el modo en que se ejecutan y las tareas que realizan. vi es independiente del tipo de terminal, pero la variable de ambiente TERM debe estar fijada correctamente. Si no se conoce o no existe, en la base de datos de terminales del sistema, el tipo exacto de terminal con el que se está trabajando, se puede usar el tipo vt100 o el ansi (dan buenos resultados en la mayoría de los terminales). Para modificar el tipo de terminal se deberá teclear: TERM=[tipo de terminal];export TERM o directamente: export TERM=[tipo de terminal] Con algunos comandos, especialmente more y a veces vi, el terminal o el emulador que se está usando pueden no responder bien, que no aparezcan los Página 2 de 9 420304785.doc http://club.telepolis.com/jagar1/Unix/Vi.htm cambios que se realizan correctamente en la pantalla. En estos casos, puede usarse Ctrl-l para refrescar la pantalla. Un usuario puede generar bajo su directorio $HOME un archivo llamado .exrc, en el que podrá adaptar el entorno del editor vi a su gusto. En este archivo se pueden incluir: Opciones set set [opcion[=valor]] Abreviaturas ab ab [abr] [cadena] Macros map. map [Key|#n] [acción] donde: Key : expresa una letra especial (no utilizada en vi). Por ejemplo v, V, q, K, Ctrl-A, etc. Las teclas correspondientes a las flechas se pueden definir como macros si es que no se encuentran definidas por defecto. n : expresa un número acción : es un comando de vi, teniendo en cuenta que antes de teclear un Escape o Return, o cualquier carácter de control hay que teclear Ctrl-v. Tanto las opciones, como las abreviaturas y macros se pueden definir en modo ex para la edición en curso, pero solo tendrán valor durante la edición actual, no siendo válidas para las siguientes llamadas al comando vi. Por ello, para que afecte a cualquier llamada del comando vi, será necesario insertarlas en el archivo .exrc. MODO TEXTO Acceso a modo texto i Insertar antes del cursor. I Insertar al principio de la línea. Página 3 de 9 420304785.doc http://club.telepolis.com/jagar1/Unix/Vi.htm a Añadir después del cursor. A Añadir al final de la línea. o Abrir línea debajo de la actual. O Abrir línea encima de la actual. R Sobreescribir (cambiar) texto. r Sobreescribir el carácter sobre el que está el cursor. c Reemplaza caracteres. cw Reemplaza palabras. C o c$ Reemplaza hasta el fin de línea. c0 Reemplaza desde el comienzo de línea. Los comandos de reemplazo admiten multiplicadores que consisten en un número antecediendo al comando. Al dar un comando de reemplazo el editor coloca un símbolo $ en donde termina el pedido de reemplazo. El usuario sobrescribe normalmente hasta donde necesite, y sale con la tecla ESC. Estos comandos admiten multiplicadores, por ejemplo 3cw abre un área de reemplazo para 3 palabras. Otros BS (Back Space) Borrar carácter hacia la izquierda. ESC Salir de Modo Texto y pasar a modo comando. MODO COMANDO Algunos de estos comandos admiten multiplicadores, que consisten en un número antecediendo al comando. flechas h ó BS (Back Space) Movimiento del cursor y Control de pantalla Mover en distintas direcciones. Una posición hacia la izquierda. Página 4 de 9 420304785.doc http://club.telepolis.com/jagar1/Unix/Vi.htm l ó SP (Espacio) kójó+ $ 0 (Cero) 1G G 18G Ctrl-G w e E b ^ % H L M 23| Ctrl-f Ctrl-b Ctrl-l Ctrl-d Ctrl-u Una posición hacia la derecha. Una línea hacia arriba. Una línea hacia abajo. Fin de línea. Principio de línea. Comienzo del archivo. Fin del archivo. Línea número 18. Mostrar número de línea 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 línea. Hasta el paréntesis que aparea. Parte superior de la pantalla. Parte inferior de la pantalla. Al medio de la pantalla. Cursor a la columna 23. Una pantalla adelante. Una pantalla atrás. Refrescar la pantalla. Media pantalla adelante. Media pantalla atrás. Búsqueda /str Buscar hacia adelante cadena de caracteres 'str'. ?str Buscar hacia atrás cadena de caracteres 'str'. n Buscar siguiente (si se usó /) o anterior (si se usó ?). N Buscar anterior (si se usó /) o siguiente (si se usó ?). fc Buscar el siguiente carácter 'c' en la línea. Fc Buscar el anterior carácter 'c' en la línea. tc Ir al carácter anterior al siguiente 'c'. Página 5 de 9 420304785.doc http://club.telepolis.com/jagar1/Unix/Vi.htm Tc Ir al carácter posterior al precedente 'c'. ; Repetir el último comando f, F, t, o T. , último comando f, F, t, o T en sentido inverso. La cadena a buscar en / o ? puede ser una expresión regular. La acción de f, F, t y T alcanza sólo a la línea actual; si el carácter buscado no está en esa línea el cursor no se mueve. Borrar, Copiar y Pegar x Borrar carácter bajo el cursor. dd Borrar línea, queda guardada. D Borrar desde cursor a fin de línea. dw Borrar desde cursor a fin de palabra. d$ Borrar desde cursor a fin de línea. d0 Borrar desde cursor a principio de línea. d) Borra hasta el final del párrafo. Y o yy Copiar línea. P Pegar antes del cursor. p Pegar después del cursor. yw Copiar palabra. y$ Copiar de cursor a fin de línea. "ayy o "aY Copiar línea en buffer llamado 'a'. 'a' "ayw Copiar palabra en buffer llamado 'a'. "ap Pegar desde buffer 'a', a la derecha del cursor. "aP Pegar desde buffer 'a', a la izquierda del cursor. "bdd Borrar línea y guardar en buffer 'b'. "bdw Borrar palabra y guardar en buffer 'b'. J Unir la línea actual y la siguiente (suprimir el retorno de Página 6 de 9 420304785.doc http://club.telepolis.com/jagar1/Unix/Vi.htm carro). Otros ZZ Grabar cambios si los hubo y salir. u Deshacer última acción. U Deshacer todos los cambios en una línea desde que se posicionó el cursor en ella. . Repetir el último comando. MODO EX O ULTIMA LINEA Generales :q Salir si no hubo cambios. :q! Salir sin guardar cambios. :w Guardar cambios. :w arch1 Guardar cambios en archivo arch1. :wq Guardar cambios y salir. :r arch2 Insertar un archivo. :e arch2 Editar un nuevo archivo. :e! arch2 Idem sin salvar anterior. :r! comando Insertar salida de comando. :shell Salir al shell (vuelve con exit). :.= Muestra el número de línea en que se halla en cursor. Mover :1 Mueve a línea 1. :15 Mueve a línea 15. Página 7 de 9 420304785.doc http://club.telepolis.com/jagar1/Unix/Vi.htm :$ Mueve a última línea. Opciones, abreviaturas y macros :set Cambio de opciones. :set nu Mostrar números de línea. :set nonu No mostrar números de línea . :set showmode Mostrar modo actual de vi. :set noshowmode No mostrar modo actual de vi. :ab [abr] [cadena] Cada vez que se teclee la cadena abr, ésta se expandirá escribiendo cadena. :ab Muestra las abreviaturas creadas. :una [abr] Elimina la abreviatura abr. :map [c] [accion] Genera la macro c que ejecutará la acción indicada. :map Muestra las macros definidas. Otros :[desde],[hasta] s/[buscar]/[reemplazar]/ Reemplaza todas la primera ocurrencia de la cadena [buscar], en cada línea, por la cadena [reemplazar] entre las líneas [desde] y [hasta] del archivo. Reemplaza todas las ocurrencias de la cadena :[desde],[hasta] [buscar] por la cadena [reemplazar] entre las líneas s/[buscar]/[reemplazar]/g [desde] y [hasta] del archivo. :[desde],[hasta] d Borra las líneas comprendidas entre las líneas [desde] y [hasta]. Ejemplos: :1,$s/Martes/martes/g Cambia Martes por martes en todo el archivo. :.,5s/ayuda/&ndo/g Cambia ayuda por ayudando desde línea actual hasta la 5ª línea. :.,$ d Elimina todas las líneas desde la línea actual al final del archivo. :ab pp Hola Pepe Cada vez que se teclee "pp " se expandirá en "Hola Pepe". Página 8 de 9 420304785.doc http://club.telepolis.com/jagar1/Unix/Vi.htm Página 9 de 9