Vi

De Wikiunix

(Redirigido desde VI)
Editor VI
Referencia breve a la utilización del editor VI, que está presente en (casi) cualquier sistema Unix por defecto.
Tiempo 2-3 horas
Nivel Usuario habitual
Bibliografía An Introduction to Display Editing with Vi
Manual del editor VI (español)
Mastering the VI editor
Prerrequisitos Conceptos básicosTerminal

Vi (Visual) es un simple editor de texto, que no lo formatea en absoluto, pues no centra ni justifica párrafos pero permite mover, copiar, eliminar o insertar caracteres por medio del búfer permaneciendo la información ahí hasta que los cambios en el archivo se hayan guardado o bien hasta que termine la ejecución de la aplicación sin haber guardado las modificaciones.

Contenido

Modos

En el editor VI se pueden elegir diferentes modos en función de la acción que se realizará al recibir una instrucción. Estos modos se pueden agrupar distinguir en dos: modo edición y modo comando, los cuales veremos a continuación más en profundidad.

Modo texto

El modo texto contiene a su vez otros modos, bastante similares entre sí pero esta compuesto por varios modos que son muy similares pero con pequeñas diferencias. Estos modos son el modo insertar, agregar, abierto y reemplazar. Sin profundizar demasiado en ellos, podemos decir que lo que escribas en alguno de estos modos será para la edición del texto del archivo.

Modo comando

El editor comienza en modo comando, en el cuál puedes tanto mover el cursor como borrar y pegar texto. El modo inserción comienza introduciendo un comando de inserción o modificado de texto. [ESC] devuelve al editor a modo comando (desde el que te puedes salir por ejemplo tecleando :q!). La mayoría de los comandos se ejecutan tan pronto como los tecleas a excepción de los comandos “dos puntos” los cuáles se ejecutan cuando pulsas la tecla RETURN.

Acciones

Salir

  • Salir, guardando los cambios :x
  • Salir (si no se han realizado cambios) :q
  • Salir (fuerza, aunque no se haya salvado) :q!

Inserción de texto

  • Insertar antes del cursor, antes de la línea i, I
  • Añadir después del cursor, al final de la línea a, A
  • Añadir una línea por debajo, por encima o, O
  • Remplazar un carácter, muchos caracteres r, R

Moverse

  • Izquierda, abajo, arriba, derecha h,j,k,l
  • Siguiente palabra, palabra delimitada por blanco w, W
  • Principio de palabra, de palabra delimitad. por blanco b, B
  • Final de palabra, de palabra delimitada por blanco e, E
  • Sentencia hacia atrás, hacia delante (, )
  • Párrafo hacia atrás, hacia delante {, }
  • Principio, al final de la línea 0, $
  • Principio, al final del fichero 1G, G
  • Linea n nG o :n
  • Hacia atrás, hacia delante hasta el carácter c fc, Fc
  • Parte superior, media y baja de la pantalla H,M,L

Borrar texto

Casi todos los comandos de borrado se realizan tecleando d seguido de un comando de movimiento. Por ejemplo, dw borra una palabra. Otros pocos comandos de borrado son:

  • Carácter de la derecha, de la izquierda x, X
  • Hasta el final de línea D
  • Línea dd
  • Línea :d

Pegar texto

Al igual que en el borrado, casi todos los comandos de pegado se realizan tecleando y seguido de un comando de movimiento. Por ejemplo, y$ pega hasta el final de línea. Otros dos comandos de pegado son:

  • Línea yy
  • Línea :y

Cambiar texto

El comando de cambio es un comando de borrado que deja al editor en modo inserción. Se realiza tecleando c seguido de un comando de movimiento. Por ejemplo cw cambia una palabra. Otros comandos de cambio son:

  • Hasta el final de la línea C
  • Línea cc

Pegar texto

  • Pegar después de la posición o después de la línea p
  • Pegar antes de la posición o antes de la línea P

Buffers

Se puede especificar el nombre de un buffer antes de cualquier borrado, cambio, copiado o pegado. El prefijo general tiene la forma “c donde c podría ser cualquier letra minúscula. Por ejemplo, “adw borra una palabra y la guarda en el buffer a. Podría ser esta palabra devuelta al texto con un comando de pegado adecuada, por ejemplo “ap.

Marcas

Las marcas nominales pueden ser colocadas sobre cualquier línea del fichero. Cualquier letra minúscula puede ser el nombre de una marca. Las marcas podrían también ser utilizadas como límites para rangos. Poner la marca c en esta línea mc

  • Ir a la marca c `c
  • Ir al primer carácter no blanco de la marca c ’c

Búsqueda de Cadenas

  • Buscar hacia delante /cadena
  • Buscar hacia atrás ?cadena
  • Repetir la búsqueda en la misma, distinta dirección n, N

Remplazar

La Función de búsqueda y remplazamiento se realiza con el comando :s. Se usar normalmente en combinación con rangos o el comando :g (más abajo):

  • Remplaza patrón con cadena :s/patrón/cadena/opción
  • Opciones: varias en la misma línea, confirmación g, c
  • Repetir el último comando :s&

Expresiones Regulares

  • Cualquier carácter único excepto el salto de línea . (punto)
  • Cero o más repeticiones *
  • Cualquier carácter del conjunto […]
  • Cualquier carácter que no sea del conjunto [^…]
  • Principio, final de línea ^, $
  • Principio, final de palabra \<, \>
  • Agrupación \(…\)
  • Contenido del agrupamiento n \n

Números

Casi todos los comandos pueden ser precedidos por un número que especifica cuántas veces va a ser realizado. Por ejemplo 5dw borrará 5 palabras y 3fe moverá el cursor hacia delante hasta la tercera ocurrencia de la letra e. Incluso las inserciones pueden ser repetidas de forma conveniente con este método, pudiéndose insertar la misma línea 100 veces.

Rangos

Los rangos pueden preceder a la mayoría de los comandos “dos puntos” y hacer que dichos comandos se ejecuten sobre un intervalo de líneas determinado. Por ejemplo :3,7d eliminará las lineas de la 3 a la 7. Los rangos son combinados frecuentemente con el comando :s para realizar una substitución en varios líneas, como con :.,$s/patrón/cadena/g para hacer una substitución desde la línea actual hasta el final del fichero.

  • Líneas de la n a la m (ambas inclusive) :n,m
  • Línea actual :.
  • Última línea :$
  • Marcador c :’c
  • Todas las líneas del fichero :%
  • Todas las líneas que encajen con el patrón :g/patrón/

Ficheros

  • Escribir a fichero (el actual si no se especifica fichero) :w fichero
  • Leer el fichero después de la línea actual :r fichero
  • Siguiente fichero :n
  • Fichero anterior :p
  • Editar fichero :e fichero
  • Remplazar la línea con la salida del programa !!programa

Otros

  • Cambiar entre mayúsculas y minúsculas ~
  • Unir líneas J
  • Repetir el último comando de cambio de texto .
  • Deshacer el último cambio, de la línea actual u, U
Herramientas personales