programación ii ing. diego j. arcusin [email protected] 1 – el editor vi
TRANSCRIPT
Invocación
El editor se invoca mediante el comando vi
Si se lo invoca enviando como parámetero un archivo existente, se
abrirá el editor junto con el archivo abierto listo para editar.
Si se lo invoca enviando como parámetero un archivo inexistente, se
abrirá el editor y se creará automáticamente el archivo con el
nombre especificado.
El vi no trabaja directamente sobre el archivo, sino que lo hace
sobre un buffer (una copia en memoria temporal). El archivo original
recién se graba al invocar algún comando de grabación del archivo.
Modos
Existen 2 modos de operación:Modo Edición.
Permite trabajar libremente con los textos del archivo. Siempre que
se desee salir del modo edición y pasar al modo comando, debe
presionarse <esc>.
Modo Comando
Permite la introducción de comandos para la ejecución de funciones
específicas del vi.
Al arrancar el Editor, siempre el sistema está en modo
comando.
Principales Comandos
Grabación y Salida del Editor
Movimiento
Inserción de Texto
Modificación de Texto
Eliminar Texto
Copiar y Mover Texto
Búsqueda y Reemplazo
Otros Comandos
Repetición de comandos
Comandos EX
Grabación y Salida del Editor
:q Sale del editor (Sólo funciona si no hubo cambios)
:q! Fuerza la salida del editor aunque haya habido cambios
:w Graba al archivo el contenido del buffer
:w xxxxxx Graba el contenido del buffer en el archivo xxxxxx
:wq Graba al archivo el contenido del buffer y sale del editor
Movimiento
De caracter en caracter Si la terminal se encuentra bien configurada, se pueden utilizar las flechas
del teclado. En forma alternativa, también se pueden utilizar: l o Barra espaciadora un caracter a la derecha
h un caracter a la izquierda
k un caracter hacia arriba
j un caracter hacia abajo
De palabra en palabra w (word) Una palabra hacia adelante
b (before) Una palabra hacia atrás
Movimiento (cont.)
Dentro de una línea ^ Nos ubicamos al inicio de la línea $ Nos ubicamos al final de la línea Return Nos ubicamos al inicio de la siguiente línea
Dentro de una pantalla H Nos ubicamos en la parte superior - izquierda de la pantalla L Nos ubicamos en la parte inferior - izquierda de la pantalla M Nos ubicamos en la parte central de la pantalla
Avance / Retroceso de Página Ctrl-F Avanza una pantalla Ctrl-B Retrocede una pantalla Ctrl-D Avanza media pantalla Ctrl-U Retrocede media pantalla
Inserción de Texto
Todos estos comandos pasan el editor a modo edición Agregar Texto
a (append) Inserta el texto a la derecha del cursor A Inserta el texto a la derecha del último caracter de la
línea actual
Insertar Texto i (insert) Inserta el texto a la izquierda del cursor I Inserta el texto al principio de la línea actual
Insertar una línea o (open) Abre una línea debajo de la línea actual O Abre una línea arriba de la línea actual
Modificación de Texto
Caracteres s Sustituye el caracter actual por uno o más caracteres. r Sustituye el caracter actual por otro caracter, y vuelvo a modo
comando
Palabras cw Sustituye la palabra (o parte de la palabra) actual
Líneas cc Sustituye la línea actual completa C Sustituye la línea desde el caracter actual J Une dos líneas (Borra el caracter nueva línea de la línea
actual)
Eliminar Texto
Caracteres x Borra el caracter donde se encuentra el cursor X Borra el caracter a la izquierda donde se encuentra el cursor
Palabras dw Borra la palabra (o parte de la palabra) actual
Líneas dd Elimina la línea actual (y el espacio que ocupa) completa D Elimina todo lo que está a la derecha del cursor. d0 Elimina todo lo que está a la izquierda del cursor.
Archivo dG Borra desde la línea actual hasta el final del archivo d1G Borra desde el principio del archivo hasta la línea actual
Copiar y Mover Texto
Copiar y PegarColocarse en la primera línea a copiarEscribir el número de líneas a copiar seguido de yy (yank)Colocarse en la línea donde se desea pegar seguido de p
(paste)
Cortar y PegarColocarse en la primera línea a cortarEscribir el número de líneas a copiar seguido de dd (delete)Colocarse en la línea donde se desea pegar seguido de p
Copiar y Mover Texto (Cont.)
Util para insertar repetidamente un grupo de líneas en varios
lugares del archivo ¿Cómo utilizarlos?
Colocarse en la primera línea a copiar Escribir comillas dobles seguido de la letra con la que se desea nombrar el
buffer (Por ejemplo: “a) Escribir el número de líneas a cortar o copiar Teclear yy o dd Colocarse en la línea donde se desea pegar Teclear comillas dobles seguido de la letra del buffer que se desea pegar
seguido de p
Búsquedas de Texto
Búsqueda /[cadena] Se posiciona sobre la siguiente ocurrencia de cadena respecto a
la posición actual ?[cadena] Se posiciona sobre la anterior ocurrencia de cadena respecto a
la posición actual n Busca la siguiente (anterior si se uso ?) ocurrencia de la cadena N Busca la anterior (siguiente si se uso ?) ocurrencia de la cadena :set ic Búsquedas Case Sensitive :set noic Búsquedas No Case Sensitive
Consideraciones Los caracteres (/& ! . ^ * $ \ ?) son especiales por lo que para ser utlizados en
búsquedas deberán ser precedidos por \ (barra invertida)
Búsquedas de Texto (Cont.)
Indicadores para búsquedas mas precisas ^ Busca al inicio de una línea $ Busca al final de una línea \< Busca al inicio de una palabra \> Busca al final de una palabra
Metacaracteres . Busca cualquier caracter (1 sola ocurrencia) * Busca cualquier caracter (cero o más ocurrencias) [ab] Reemplaza por cualquier caracter entre los corchetes [a-b] Reemplaza por cualquier caracter en el rango especificado
Reemplazar Texto
El formato para comoandos de reemplazo es el
siguiente: :g/cadena/s//nuevacadena/g
Se pueden utilizar cualquiera de los mecanismos de
búsqueda antes mencionados.Modificando la opción /g por /gc el vi pide confirmación
antes de cada reemplazo.
Otros comandos
Deshacer (Undo) u Deshace el último comando U Deshace todos los cambios realizados en la línea
Insertar archivos :r archivo Inserta el archivo en la posición actual del cursor :nrolinea r archivoInserta el archivo a partir de la línea nrolinea
Es posible ejecutar comandos del Shell sin salir del editor. :!comandoshell Ejecuta un comando del shell y vuelve al
editor !!comandoshell Ejecuta un comando del shell y se incluya su
salida en el archivo :sh Ejecuta un shell. Al salir del shell (Ctrl-D)
vuelve al editor.
Repetición de comandos
Repetición de comandos . Repite el último comandoLos comandos se pueden preceder por un número que indica
cuántas veces se debe repetir el comando. Por ejemplo:10x Borra 10 caracteres5dd Borra 5 líneas10. Repite 10 veces el ultimo comando2Ctrl-F Avanza 2 páginas
Comandos EX
:#lineaA,#lineaB co #lineaC Copia líneas :#lineaA,#lineaB m #lineaC Mueve líneas :#lineaA,#lineaB d Eliminalíneas
linea A = Linea Desde – lineaB = Línea Hasta – lineaC = Línea Destino
En lugar de los nros de línea, también se pueden utilizad: . Línea Actual (donde se encuentra el cursor) $ Ultima línea del archivo
:set nu Permite visualizar los nros de línea :set no Quita la numeración
El Entorno de trabajo
El vi permite modificar el entorno de trabajo mediante opciones Para activar una opción
:set opcion
Para desactivar una opción :set noopcion
Algunas opciones autoindent Hace que la línea siguiente conserver la
indentación de
la anterior number Numera las líneas (:se nu es en definitiva un apócope ) showmode Indica visualmente el modo de trabajo activo
El Entorno de trabajo (Cont.)
Abreviaturas Se pueden establecer abreviaturas para cadenas largas. Al escribir la abreviatura el
editor reemplazará la misma por el texto correspondiente :ab abreviatura cadena larga (Ej: :ab uc Universidad del Cema) :una abreviatura Elimina la abreviatura
Macros Se puede asignar a un caracter una secuencia de comandos para facilitar su
ejecución recurrente. :map tecla secuencia_comandos (Ej: :map m dd k “ap) :umap tecla Elimina la macro
Se pueden conservar las definiciones personales del entorno de trabajo
(opciones, abreviaturas y macros) mediante la creación de un archivo
llamado .exrc en el Home Directory del usuario.
Ejercicios
Experimente los comandos W (mayúscula) y B
(Mayúscula), que diferencias encuentra con w y b.
Investigue las siguientes opciones de Entorno:showmatch
all
Ingrese el comando :se all ¿Qué ocurre?