meta data de esta página
  •  

Vi

VI es un editor de textos que ya estaba en los tiempos de UNIX, disponible en GNU/Linux, y que odié muchísimo cuando lo estudié, pero que no podría vivir sin él ahora mismo. Es la manera más rápida de editar un fichero. Muy útil para los ficheros de configuración de nuestro sistema, los típicos INSTALL de los tar.gz, los MakeFiles, etc..

Si se reinicia la máquina accidentalmente cuando tenemos un fichero abierto con el vi el sistema crea un fichero ficheroabiertot.swp. Al abrirlo vi (default.swp) nos dice si queremos recuperarlo y editarlo

Si algo se puede decir de VI es que no es un típico editor. Olvídate del ratón, de seleccionar con SHIFT + Flechas o del Control + C / Control + V y abre la mente a la tecla ESC.

En VI la tecla ESC es de suma importancia ya que es la tecla que presionaremos casi siempre antes de realizar una acción como puede ser copiar, empezar a escribir o ir al final de línea, etc..

Abrir/Crear un fichero: vi fichero (Si el fichero no existe y lo guardamos este se creará).

DescripciónComando
habilita las distintas sintaxissyn on
pone el vi con la sintaxis del apacheset sintax=apache
Dividir en dos la pantalla pero en una de ellas pone un fichero en blanconew
divide la pantalla en dos con el mismo fichero en las dos partessplit
Visualizar los números de las líneas:set nu
Ocultar los números de las líneas:set nonu
Ir a la línea siguiente+
Ir a la línea anterior-
Ir a la línea que esta 8 puestos más abajo:+8
Ir a la línea que esta 9 puestos más arriba:-9
Ir a la línea numero 6:6
Marcar la línea del cursor con la etiqueta 'a'.(Sólo puede usarse una letra)ma
Ir a la línea marcada con 'a“.'a
Ir a la última línea del fichero, “$”.:$
Borrar las líneas entre P y U, ambas incluidas.P y U son identificadores de líneas, es decir,
números de lineas o etiquetas. Ejemplos:
:6,'a d borrar las lineas entre la "6" y la 'a'
:'a,'b d borrar las lineas entre la 'a' y la "b"
:'a,$ d borrar las lineas desde 'a' hasta el final
:P,U d
Escribir en el fichero “Fichero” las lineas comprendidas entre P y U, ambas incluidas:P,U w Fichero
Leer el contenido del fichero “Fichero” y ponerlo a continuacion de la linea del cursor.:r Fichero
Buscar, hacia adelante, la aparicion de “texto”./texto/
Buscarlo hacia atras.?texto?
Continuar la busqueda en la direccion elegida.n
Continuar la busqueda en la direccion opuesta.
/i.ad/ busca iXad, donde X es cualquier caracter
/i...ad/ busca iXXad, donde XX son dos caracteres cualesquiera
N
Substituir texto desde las lineas P a U; solo la
:P,U s/texto viejo/texto nuevo/
primera vez que aparezca en cada linea. Ejemplos:
:1,$ s/hola/adios/ substituir el primer "hola" de cada linea del fichero por 'adios'
Substituir texto desde las lineas P a U; todas las veces que aparezca.
:'a,$ s/hola/adios/g substituir todos los "hola" por 'adios' desde la linea marcada 'a' hasta el final
:P,U s/texto viejo/texto nuevo/g
Ignorar mayusculas/minusculas en busquedas y substituciones:set ic
No ignorarlas :set noic
Auto-margen: cada nueva linea aparece con el mismo margen que la linea anterior. (Util cuando se escriben ficheros FORTRAN):set ai
No auto-margen.:set noai
Definicion de una abreviatura (ABREV en este caso)abb ABREV texto

Escritura

DescripciónComando
Deshacer el último cambio realizado: u
Añadir una línea antes del cursor:O
Añadir una línea después del cursor:o
Empezar a escribir al principio de la línea:I
Empezar a escribir al final de la línea:A
Empezar a escribir después del cursor

Empezar a escribir antes del cursor|: i|

Movimiento

Estas combinaciones están activas cuando no estamos editando (ESC + i, ESC + a, etc..) y no hace falta presionar ESC.

DescripciónComando
Entre carácteres
atrás h
adelante l
Entre líneas
atrás k
adelante j
Entre palabras
atrás b
adelante w
Entre frases
atrás ( adelante )
adelante CTRL-F
Entre parágrafos
atrás {
adelante }
Media pantalla
atrás CTRL-U
adelante CTRL-D
Una pantalla
atrás CTRL-B
refresca la pantallaCTRL+L
cursor al final del ficherog
cursor al principio del fichero1 g
cursor al final de la línea$
cursor al principio de la línea0

Eliminar

Borrar un caracter(donde se encuentra el cursor)ESC + x
Borrar una palabra(donde se encuentra el cursor) ESC+dw
Borrar 8 caracteresESC+8x
Borrar 2 palabrasESC+2dw
Borrar una línea entera(donde se encuentra el cursor)ESC + dd
Borrar el resto de una línea: (a la derecha del cursor)ESC +D
Es posible borrar más de un caracter, palabra o línea añadiendo en número deseado después del ESC y antes de la opción. Por ejemplo: ESC + 4dd borrará 4 líneas.

Copiar/Pegar

Copiar una linea: yy
copiar varias líneas si ponemos un número antes indica el número de líneas a copiar. por ejemplo 5yy
cortar una línea: dd
cortar varias líneas ponemos un número antes del dd indicando el número de líneas a cortar 10dd corta 10 líneas a partir de la actual.
Pegar lo copiado: p después del cursor
Pegar antes del cursor:P
Sobreescribir:s
Sustituir 15 caracteres por texto15s
Sustituir un solo carácter por otro nuevo sin entrar en modo textor
Sobrescribir textoR
Unir la línea del cursor con la siguienteJ
Romper una línea en dos i
Repetir el último cambio realizado.

Búsquedas

Buscar una palabra / + palabra
Seguir la búsqueda hacia adelante n
Seguir la búsqueda hacia atrás N

Guardar y Salir

Sale al modo comandosESC
Guardar ficherow
Guardar y salirwq
Guardar comow <fichero>
Guarda y salir forzandowq!
Salir sin guardar si no se han realizado cambiosq
Salir sin guardarq!
Grabar si hay cambiosx