Editor VI


1. ¿Como podemos editar con vi?
      Antes de ejecutar vi, debemos estar seguros de utilizar un terminal adecuado, ya que es necesario que vi sepa el tipo de terminal para que funcione correctamente. Para conocer el tipo de terminal se hace mediante la variable de entorno TERM y se hace:
      $ echo $TERM
      vt100
      $
      Si nuestra variable TERM no es ansi hemos de hacer lo siguiente:
      $ TERM=ansi
      $ export TERM
      $ echo $TERM
      Ahora ya podemos comenzar a editar con vi dando la orden:
      $ vi fichero
      Si deseamos abrir un fichero desde cierta línea, la forma de hacer sería:
      $ vi +20 fichero
      Por último, si queremos que sitúe el cursor inicialmente al comienzo de luna límea determinada del archivo; la forma sería:
      $ vi + fichero

 2. Estructura de las ordenes de vi 
      El editor vi tiene dos modos de trabajo, uno es el modo mandato o modo orden y modo edición. El modo edición se refiere cuando podemos introducir texto en el fichero, y en el modo mandato, solamente podemos dar órdenes. Para pasar al modo mandato solamente hace falta presionar la tecla de escape (ESC). Las órdener de vi tienen la siguiente expresión:
      [contador] operador [contador] objeto
   3. Órdenes más comunes de vi
  • a Añade texto después de la posición del cursor.
  • i Inserta texo antes de la posición del cursor.
  • A Añade texto al final de la línea.
  • I Inserta texto al principio de la línea.
  • o Abre la línea posterior de donde se encuentra actualmente el cursor.
  • O Abre la línea anterior de donde se encuentra actualmente el cursor.
  • e Avanza una palabra y el cursor queda colocado al final de la misma.
  • b Se mueve hacia atrás, hasta el principio de la palabra.
  • dd Borra la línea en la que está situada el cursor.
  • U Deshace el último cambio realizado en una línea.
  • u Deshace el último cambio.
  • . (punto) Repite la última operación efectuada.
  • x Borra un carácte. Si a continuación pulsamos “.”, repite el borrado.
  • X (Backspace) Borra caracteres hacia atrás.
  • r Reemplaza un carácer.
  • R Reemplaza caracteres.
  • ZZ Salimos del editor guardando los cambios.
    4. Movimientos del cursor
  • h Cursor hacia la izquierda (<–).
  • j Cursor hacia abajo.
  • k Cursor hacia arriba.
  •  l Cursor hacia la derecha (–>).
  • $ Mueve el cursor al final de la línea.
  • ^ Mueve el cursor al principio de la línea.
  • H Mueve el cursor al principio del texto de la ventana de texto.
  • M Mueve el cursor a la mitad del texto de la ventana.
  • L  Mueve el cursor al final del texto de la ventana.
  • :   Se mueve a la linea escrita luego de los “:”. Por ejemplo: “:49″ se mueve el cursor hasta  la linea 49.
5. Cambios de ventana
  • z “ENTER” Coloca la línea donde se encuentra el cursor al principio de la pantalla. 
  • z . Coloca la línea donde se encuentra el cursor en el medio de la pantalla. 
  • z – Coloca la línea donde se encuentra el cursor al final de la pantalla.
  • ^E Scroll up, una línea.
  • ^Y Scroll down, una línea.
  • ^D Scroll down, media ventana.
  • ^U Scroll up, media ventana.
  • ^F Forward, avanza una página.
  • ^B Backwar, retrocede una página.
6. ¿Cómo salir de vi?
  • :q!”ENTER” Salir sin grabar desde modo mandato.
  • :qw “ENTER” Salir guardando el fichero.
  • : x “ENTER” Lo mismo que la anterior.
  • :w $HOME/fichero Guardar en el path ($HOME) con el nombre especificado.
7. Opciones del editor 
      Hay ciertas opciones que el usuario puede personalizar en el editor. La forma de acceder a cada una de las opciones es teclear desde modo mandanto.
      Para habilitar o deshabilitar la opcion deseada teclearemos:
      :set opcion
      :set noopcion
      Para ver el estado de todas las variables que puden ser activadas o desactivadas:
      :set all
8. Operaciones con palabras
  • dw Borra la palabra situada a continuación del cursor.
  • cw Cambia la palabra situada a coninuación del cursor.
  • D Borra desde la posición del cursor hasta el final de la línea.
  • C Cambia desde la posición del cursor hasta el final de la línea.
  • f a Busca en la línea el carácter “a” (hacia adelante).
  • F a Busca en la línea el carácter “a” (hacia atrás).
  • ; Sigue buscando el mismo carácter en la misma dirección.
  • , Sigue buscando el mismo carácter en dirección contraria.
  • J Sirve para juntar líneas.
  • G Sirve para ir a la línea que les especifiquemos. Por ejempo, 543G.
  • dG Borra hasta el final del archivo.
9. Operaciones más importantes en modo ex
  • Leer un archivo y cargarlo en memoria interna:
                :r archivo
  • Editar un archivo vaciando la memoria interna actual: 
                :e archivo
  • Añadir el contenido actual de la memoria intermedia a un determinado archivo:
                :w >> archivo
  • Escribir desde la línea M hasta la N de la memoria intermedia en el archivo especificado:
                :M,Nw archivo
  • Para colocar el cursor en una determinada línea utilizamos:
                :num_línea
  • Para ejecutar una nueva shell desde el editor vi, tecleamos:
                : !sh
10. Búsqueda de patrones 
Búsqueda de palabras:
  • Para buscar una determinada desde la posición del cursor hacia adelante es:
                /patrón
  • Si la queremos buscar desde la posición del cursor hacia atrás:
                ?patrón
En cualquier caso si queremos seguir buscando las siguientes palabras, sólo bastará con pulsar n, y si lo queremos hacer en dirección opuesta al cursor N.
Reemplazo de palabras:
  • Reemplazar todas las palabras en todo el documento:
                :1,$s /palabra_antigua/palabra_nueva/g
  • Reemplazar solo la primera ocurrencia de la palabra, desde la línea m hasta la n:
                :m,ns /palabra_antigua/palabra_nueva/
11. Marcas de posición
Hay la posibilidad de poner marcas en determinadas posciones del archivo para facilitar su vuelta en esta posción. Se hace mediante la orde m (mark) seguida de un carácter simple. Entonces si queremos volver a determinado punto del archivo solo nos bastará con pulsar ‘(accento grave) y a continuación el nombre de la posción a donde queremos volver.
12. Mover bloques                
El movimiento de texto supone la combinación de un número de comandos para conseguir el propósito final. Esta sección introduce los buffers con y sin nombre junto a los comandos que cortan y pegan el texto. La copia de texto se realiza en tres pasos principales:
  • Copia del texto a un buffer.
  • Movimiento del cursor al lugar de destino.
  • Pegar (poner) el texto en el buffer de edición
El buffer de edición no es sino el propio fichero en el que usted está trabajando. Para Copiar texto al buffer sin nombre use el comando “y”.
  • “yy” Mueve una copia de la línea actual al buffer sin nombre.
  • “Y” Mueve una copia de la línea actual al buffer sin nombre.
  • “nyy” Mueve las siguientes n lineas al buffer sin nombre.
  • “nY” Mueve las siguientes n líneas al buffer sin nombre.
  • “yw” Mueve una palabra al buffer sin nombre.
  • “ynw” Mueve n palabras al buffer sin nombre.
  • “nyw” Mueve n palabras al buffer sin nombre.
  • “y$ dólar” Mueve el texto desde la posición actual al final de la línea, al buffer sin nombre.
Nota: “buffer” es una palabra inglesa que se refiere a un espacio reservado en memoria para guardar alguna información temporalmente. En este caso se usan buffers para almacenar una copia temporal del texto que usted desea copiar o mover. El buffer sin nombre es un buffer temporal que puede ser fácilmente afectado por otros comandos comunes. Hay ocasiones en las cuales necesitamos mantener el contenido de un buffer durante un período más extenso de tiempo. En este caso se usaría un buffer con nombre. “vi” tiene 26 buffers con nombre. Los buffers usan las letras del alfabeto como el nombre de identificación. Para distinguir un comando de un buffer con nombre, “vi” usa el caracter “” comillas”. Cuando use un buffer con nombre de letra minúscula los contenidos se sobre escriben, mientras que el uso del nombre en letra mayúscula añade el nuevo texto al contenido actual.
  • <>”"ayy” Mueve la línea actual al buffer con nombre a.
  • “”aY” Mueve la línea actual al buffer con nombre a.
  • “”byw” Mueve la palabra actual al buffer con nombre b.
  • “”Byw” Añade la palabra actual al contenido del buffer b.
  • “”by3w” Mueve las siguientes 3 palabras al buffer b.
Use el comando “p” para pegar el contenido del buffer al buffer de edición.
  • “p” Pegar del buffer sin nombre a la DERECHA del cursor.
  • “P” Pegar del buffer sin nombre a la IZQUIERDA del cursor.
  • “nP” Pegar n copias del buffer sin nombre a la IZQUIERDA del cursor.
  • “aP” Pegar del buffer con nombre “a” a la DERECHA del cursor.
  • “”b3P” Pegar 3 copias del buffer con nombre “b”a la IZQUIERDA del cursor.
Cuando use “vi” dentro de un xterm tiene otra opción para copiar texto. Marque el bloque de texto que desea copiar arrastrando el cursor del ratón sobre el texto. Si mantiene pulsado el botón izquierdo del ratón y arrastra el ratón desde el comienzo al final, invertirá el vídeo del texto. Esta operación automáticamente coloca el texto en un buffer reservado para el servidor de X Window. Para pegar el texto, pulse el botón de enmedio. Acuérdese de poner “vi”en modo de inserción dado que la entrada de texto se podría interpretar como comandos y el resultado sería cuando menos desagradable. Usando la misma técnica se puede copiar una sola palabra haciendo doble click con el botón izquierdo del ratón sobre la palabra. Solamente se copiará esa única palabra. Para pegarla se usa el mismo procedimiento que anteriormente. Los contenidos del buffer sólo cambian cuando se marca otro bloque de texto. Para mover un bloque de texto son necesarios tres pasos.
  1. Borrar el texto para ponerlo en un buffer con o sin nombre.
  2. Mover el cursor a la posición de destino.
  3. Pegar el buffer.
El proceso es el mismo que el de copia con un solo cambio en el primer paso para borrar. Cuando se usa el comando “dd”, la línea se borra y se coloca en el buffer sin nombre. Luego puede poner el contenido del mismo modo que lo hizo cuando copió el texto en la posición deseada.
  1. “add” Borrar la línea y ponerla en el buffer con nombre a.
  2. “a4dd” Borrar cuatro líneas y ponerlas en el buffer con nombre a.
  3. “dw” Borrar una palabra y ponerla en el buffer sin nombre.
En el caso de que el sistema falle, el contenido de todos los buffers se pierde excepto el contenido de los buffers de edición, que se puede recuperar (ver comandos étiles).

Comentarios

Entradas populares