En este artículo:
Antes de nada, hemos de tener claro que el editor vi ofrece el modo comando, y el modo de inserción.
–> Al modo comando accedemos pulsando la tecla Escape. También es el modo en el que accedemos a los ficheros cuando usamos vi.
–> Al modo de inserción accedemos pulsando la tecla i (insert).
Estas secuencias de comandos básicos de vi, para guardar, salir .. etc, los ejecutaremos desde el modo COMANDO.
Recordemos que si nos encontramos en el modo de inserción, tendremos que pulsar la tecla ESC para salir de inserción e ir al modo COMANDO y así poder ejecutar estos comandos:
:w
Guardar
:x
Guardar y salir
:q
Salir, cuando no se han realizado cambios.
:q!
Salir, forzando que se descarten los cambios realizados.
Estos atajos permiten insertar texto con el editor vi; accederemos a ellos desde el modo COMANDO (o sea que antes de ejecutar cualquiera de los siguientes atajos, tenemos que estar en el modo COMANDO, no en el modo de inserción).
Para ver cómo funcionan estos atajos utilizaremos un fichero de ejemplo, con este contenido:
aaaaa
bbbbb
ccccc
ddddd
eeeee
fffff
Y en todos los ejemplos, nuestra posición original del cursor será la primera posición de la tercera línea:
i
Pasar a modo de inserción. Inserta antes del cursor. Cuando entramos a MODO DE INSERCIÓN, podremos ver que aparece “INSERT“
a
Añade (append 1 posición) después de la posición del cursor. Entra en modo de Inserción y se coloca después de la posición actual del cursor. Comprobamos que partiendo de nuestra posición original, la tercera línea, primer carácter, pulsamos la letra “a“, y vemos que el cursor se mueve 1 posición adelante de donde estaba:
A
Añade (append final de linea) al final de la línea donde se encuentre el cursor (Entra en modo de Inserción y se al final de la línea actual del cursor).
Por ejemplo, teniendo este fichero con este contenido creado, vemos que el cursor está al principio de la tercera línea.
Pulsamos “A” (a mayúscula) y el cursor se posiciona al fila de la línea, y podremos comenzar a escribir:
o
Añade una nueva línea DESPUÉS de la linea actual.
Partiendo del mismo fichero que teníamos, pulsamos la letra “o” (o minúscula), y vemos que se añade una nueva línea después de la actual:
O
Añade una nueva línea ANTES de la linea actual.
De nuevo partiendo de la tercera línea, en la primera posición, pulsamos la tecla “O” (o mayúscula), y vemos que se añade una nueva línea ANTES de la línea actual.
r
Sobreescribe un caracter. Vemos que se sobreescribe el caracter donde se encontraba el cursor (hemos pulsado la letra “r” para sobreescribir, y luego en este caso hemos sobreescrito con una x):
R
Sobreescribe (REPLACE, reemplaza) muchos caracteres.
Esta opción nos permite reemplazar más de un caracter. Pulsamos la letra R (r mayúscula) y vemos que aparece el texto “REPLACE“, y podemos comenzar a reemplazar caracteres:
En este caso el cursor estaba en la primera posición de la tercera línea; hemos pulsado la letra R, y hemos comenzado a reemplazar con la letra X.
C
Reescribe la línea entera desde la posición actual del cursor. Vemos que se reescribe la línea entera desde la posición en la que se encontraba el cursor (en este caso al principio de la línea):
x
Borra el caracter a la derecha del cursor
X
Borra el caracter a la izquierda del cursor
D
Borra el resto de la línea
dd
Borra la línea actual
ndd
Borra n líneas, comenzando por la actual. Por ejemplo, borrar 3 líneas sería 3dd
p
Pega después de la posición del cursor. Para esto hemos de haber copiado algo antes. Pongamos que hemos copiado 1 línea previamente, con 1yy, y luego la pegamos, y vemos que se pega la línea entera después de la posición del cursor:
P
Pega ANTES de la posición del cursor. Lo mismo que en el ejemplo anterior, pero en este caso vemos que la línea se pega en la posición anterior a donde estaba el cursor:
Vi permite copiar el número de líneas que le digamos, usando “yy” en modo COMANDO.
yy
Así, volvemos a nuestro fichero, en la tercera línea:
Y vamos a copiar 1 línea con :1yy
1yy
Nos posicionamos al final del fichero (podemos hacerlo usando la tecla G, como hemos visto anteriormente) y pegamos la línea copiada, con
p
Nos colocamos de nuevo en la tercera linea:
y vamos a copiar 3 lineas. Pulsamos 3yy
3yy
Después nos vamos al final del documento con la letra G, y pegamos con “p” las líneas copiadas:
Además de las flechas de posición del teclado, disponemos de las teclas h, j, k, l , para mover el cursor a la izquierda, abajo, arriba y derecha respectivamente.
0
Va al comienzo de la línea
$
Va al final de la línea
1G
Va al comienzo del fichero
G
Va al final del fichero
:n
Ir a la línea número “n” del fichero. Por ejemplo, ir a la cuarta línea sería :4
H
Ir a la parte superior del fichero
L
Ir al final del fichero
M
Ir a la mitad del fichero
gg
ir al principio del fichero
h o flecha izquierda
izquierda
j o flecha abajo
abajo
k o flecha arriba
arriba
l o flecha derecha
derecha
w
coloca el cursor en la siguiente palabra
b
coloca el cursor al comienzo de la palabra
e
coloca el cursor al final de la palabra
/texto
busca hacia delante la coincidencia con “texto”
?texto
busca hacia atrás la coincidencia con “texto”
n
va al siguiente resultado (buscando hacia delante).
N
Va al resultado anterior (buscando hacia atrás).
:set ic
Ignorar las Mayúsculas o minúsculas mientras realiza la búsqueda (Case INSENSITIVE)
:set noic
Tiene en cuenta en la búsqueda las Mayúsculas y minúsculas (NO Case SENSITIVE, o sea CASE SENSITIVE
:1,5g/cadena
Busca la cadena de texto, de la línea 1 a la 5.
Partiendo de la línea tercera, buscamos “fffff”, y vemos que encuentra la última línea, donde aparece “fffff”:
Sin embargo, si nos posicionamos al final del fichero:
realizamos la búsqueda hacia delante:
/fffff
y vemos que aparece el mensaje :
search hit BOTTOM, continuing at TOP
es porque está buscando hacia delante.
?aaaaa
Pero si buscamos “fffff”
?fffff
Mostrará el mensaje inverso:
search hit TOP, continuing at BOTTOM
:s/buscar/reemplazar/
:s/buscar/reemplazar/g
:%s/buscar/reemplazar/
:%s/buscar/reemplazar/g
u
Deshacer el último cambio
J
juntar líneas
.
Repetir el último comando
U
deshacer todos los cambios hechos en la línea
v
Accede al modo visual (se marca lo que vamos haciendo)
Ctrl + c
Sale del modo de Inserción
Además de los comandos básicos para guardar y salir, esta es nuestra lista top de comandos más básicos y útiles para trabajar con el editor vi:
dd
Borrar línea actual
nyy
Copiar n líneas
p
pegar después de la posición del cursor
J
Unir líneas
G
ir al final del fichero
1G
Ir al principio del fichero
:n
Ir a la línea n del fichero
:set number
Mostrar los números de línea
o
Añadir una nueva línea tras la línea actual
u
Deshacer el último cambio
:%s/buscar/reemplazar/g
Buscar y reemplazar en todo el fichero