El editor Vi | atajos y ejemplos

El editor vi es un potente editor con multitud de posibilidades. Conviene conocer como usar vi en Linux.

 

En este artículo:

 

 

Modos del editor vi

 
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).
 

 

Controles de vi

 
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.
 

 

Insertando texto

 

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:

1
2
3
4
5
6
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:

veditor vi - append

 

  • i

    Pasar a modo de inserción. Inserta antes del cursor. Cuando entramos a MODO DE INSERCIÓN, podremos ver que aparece “INSERT

 

editor vi - 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:

editor vi - append despues de la posicion del cursor

 

  • 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.

vi - append
 

Pulsamos “A” (a mayúscula) y el cursor se posiciona al fila de la línea, y podremos comenzar a escribir:

editor vi - append

 

  • 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:

editor vi - nueva linea despues de la linea 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.
 
editor vi - nueva línea ANTES de la linea 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):

 

vi - sobreescribir un caracter
 

  • 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:
 

vi - replace
 

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.
 

vi reemplazar caracteres

 

  • 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):

vi - reescribe linea entera desde posicion del cursor

 

 

Borrar texto en el editor vi

 

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
 

 

PEGAR texto en vi

 

  • 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:

 
editor vi - pegar despues de la posicion 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:

 
pegar antes de la posicion dle cursor

 

 

COPIAR LÍNEAS

 
Vi permite copiar el número de líneas que le digamos, usando “yy” en modo COMANDO.

yy

 

 

Copiar 1 línea

 
Así, volvemos a nuestro fichero, en la tercera línea:

vi - append
 
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

 
vi - copiar y pegar una linea
 

 

Copiar más de 1 línea

 
Nos colocamos de nuevo en la tercera linea:
 
append
 

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:

 

copiar más de 1 linea con editor vi

 

 

 
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.

 

 

Atajos más útiles para navegación con el cursor en ficheros

 

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

 

 

Otros atajos para navegación en ficheros

 

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
 

 

BUSCAR con vi

 

/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.

 

 

Ejemplos de búsqueda

 

  • Buscar hacia delante:

Partiendo de la línea tercera, buscamos “fffff”, y vemos que encuentra la última línea, donde aparece “fffff”:

buscar hacia delante en editor vi

 

Sin embargo, si nos posicionamos al final del fichero:

editor vi - ir a final del fichero

realizamos la búsqueda hacia delante:

/fffff

 
y vemos que aparece el mensaje :

search hit BOTTOM, continuing at TOP

editor vi - buscar hacia delante desde el final del fichero

es porque está buscando hacia delante.

 

  • Buscar hacia atrás: Caso inverso al anterior. Partiendo de la linea tercera, buscamos “aaaaa”, y encuentra el texto en la primera línea:
?aaaaa

 
editor vi - buscar hacia atras

 

Pero si buscamos “fffff”

?fffff

 
Mostrará el mensaje inverso:

search hit TOP, continuing at BOTTOM

 

 

Buscar y reemplazar texto

 

  • Buscar y reemplaza en la línea actual, la primera coincidencia de la línea:
:s/buscar/reemplazar/

 

  • Busca y reemplaza en la línea actual, TODAS las coincidencias de la línea:
:s/buscar/reemplazar/g

 

  • Busca y reemplaza en TODO el fichero, la primera instancia de cada línea
:%s/buscar/reemplazar/

 

  • Busca y reemplaza en TODO el fichero, TODAS las instancias de cada línea
:%s/buscar/reemplazar/g

 

 

Otros atajos en vi

 

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

 

 

Resumen de los mejores atajos de vi

 

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