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ón	Comando
habilita las distintas sintaxis	syn on
pone el vi con la sintaxis del apache	set sintax=apache
Dividir en dos la pantalla pero en una de ellas pone un fichero en blanco	new
divide la pantalla en dos con el mismo fichero en las dos partes	split
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ón	Comando
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ón	Comando
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 pantalla	CTRL+L
cursor al final del fichero	g
cursor al principio del fichero	1 g
cursor al final de la línea	$
cursor al principio de la línea

Eliminar

Borrar un caracter(donde se encuentra el cursor)	ESC + x
Borrar una palabra(donde se encuentra el cursor)	ESC+dw
Borrar 8 caracteres	ESC+8x
Borrar 2 palabras	ESC+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: (Se pueden copiar más líneas añadiendo el número entre el ESC y la y) Pegar lo copiado: p después del cursor yy Pegar antes del cursor: P Sobreescribir: s Sustituir 15 caracteres por texto 15s Sustituir un solo carácter por otro nuevo sin entrar en modo texto r Sobrescribir texto R Unir la línea del cursor con la siguiente J 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 comandos	ESC
Guardar fichero	w
Guardar y salir	wq
Guardar como	w <fichero>
Guarda y salir forzando	wq!
Salir sin guardar si no se han realizado cambios	q
Salir sin guardar	q!
Grabar si hay cambios	x