Editor «vi» de Linux. ¿Cómo funciona?

Programación de Linux con VI

VI es un editor de texto sin entorno gráfico, que se desarrolló originalmente para el sistema operativo UNIX. VI es una opción popular entre los programadores porque permite una amplia gama de características.

VI admite varios atajos de pulsación de teclas para moverse entre archivos de texto. Por ejemplo, el comando CTRL-V se puede pegar texto en el portapapeles. También es posible ejecutar comandos VI con expresiones regulares.

VI también le permite buscar palabras dentro del archivo de texto, desde arriba hacia abajo o a la inversa..

En resumen, «vi» es el editor clásico de todos los sistemas UNIX que se utiliza en modo texto y todavía hoy se usa mucho, sobre todo, por parte de los administradores de sistemas. Actualmente, existen versiones más modernas basadas en vi como «vim» o «nano».

Evidentemente, en Linux existen procesadores de texto en modo gráfico muy potentes como, por ejemplo, LibreOffice pero los administradores de sistemas suelen conectarse a los servidores mediante un cliente SSH en modo texto y necesitan un editor que trabaje de esta manera para crear scripts o mirar logs, por ejemplo. Por ese motivo, es fundamental que un administrador conozca vi muy bien.

Comandos útiles de VI

A continuación, veremos algunos de los comandos de vi más útiles:

Edición de texto

i –> Prepara el editor para insertar texto en la posición del cursor donde estemos (antes del cursor).
I –> Inserta texto al principio de la línea.
a –> Inserta texto después del cursor.
A –> Inserta texto al final de la línea.
R –> Sobreescribir.
yy –> Copia la línea actual y la inserta en la siguiente.
+3 –> Vamos directamente a editar la línea número 3.

Movimiento del cursor

Flechas –> Nos movemos en las diferentes direcciones.
h o BS –> Nos movemos hacia la izquierda.
l o SP –> Nos movemos hacia la derecha.
k o – –> Subimos una línea.
k o + –> Bajamos una línea.
$ –> Vamos al final de la línea.
0 –> Nos situamos en el principio de la línea.
11G –> Vamos a la línea número once.
Control-G –> Indica el número de línea actual.
w –> Vamos al comienzo de la palabra siguiente.
e –> Vamos al final de la siguiente palabra.
b –> Al principio de la palabra anterior.
^ –> Primera palabra de la línea.
H –> Parte superior de la pantalla.
L –> Parte inferior de la pantalla.
Control-F –> Avance de página.
Control-B –> Retroceso de página.

Borrar texto

x –> Borra el texto donde está situado el cursor.
p –> Escribe el carácter borrado.
X –> Borra los caracteres que están por detrás del cursor.
D –> Borra desde la posición del cursor hasta el final de línea.
dw –> Borra desde la posición del cursor hasta el final de la palabra.
d0 –> Borra desde la posición del cursor hasta el principio de la línea.

%d –> Elimina todo el contenido del fichero

Buscar texto

/texto –> Busca texto hacia adelante.
?texto –> Busca texto hacia atrás.
n –> Repite la búsqueda.

Reemplazar texto

:%s/cadena_a_sustituir/nueva_cadena/g –> Sustituye una cadena de texto en todo el fichero. Para sustituir el carácter “/” utilizaremos la contrabarra delante, por ejemplo en una fecha:

02/28/09 –> Utilizaremos  :%s/02\/28\/09/otra_cadena/g

Otros comandos

J –> Unimos la siguiente línea a la actual.
u –> (undo) deshace el último cambio.
ESC –> Salimos del comando actual para ejecutar uno nuevo.
:q –> Salimos de vi si no hemos hecho cambios.
:q! –> Salimos de vi sin guardar cambios.
:w –> Guardamos los cambios.
:w fichero –> Guardamos el documento con el nombre del fichero indicado.
:wq –> Guardamos los cambios y salimos.

Automatizar comandos de vi

vi permite ejecutar sus propios comandos internos de manera automatizada.  A esto se le llama un script de vi. Es decir, podemos crear un fichero con todos los comandos de vi que queremos ejecutar.

vi -s comandosvi.vi Fichero.txt

Ejemplo:

  • Ponagmos por caso que tenemos el fichero “prueba.txt” con el siguiente contenido:


[hpddpers@acr-ljump ~]$ cat prueba.txt
prueba1
prueba2
prueba3
prueba5
[hpddpers@acr-ljump ~]$

  • Queremos insertar la cadena de texto “prueba4” entre “prueba3” y “prueba5” pero sin tener que editar el fichero manualmente, así que preparamos un script de vi que lo haga automáticamente:

[hpddpers@acr-ljump ~]$ cat comandosvim.vim
:0
/^prueba3
A
prueba4

x!
[hpddpers@acr-ljump ~]$

Lo que hace el fichero anterior es:

  • Vamos a la línea 0 del fichero.
  • Buscamos la cadena de texto “prueba3”.
  • Insertamos al final de la línea con el comando “A” de vi.
  • Escribimos “prueba4”.
  • Guardamos el fichero.

Ejemplo de ejecución:

[hpddpers@acr-ljump ~]$ vim -s comandosvim.vim prueba.txt >/dev/null 2>&1
[hpddpers@acr-ljump ~]$ cat prueba.txt
prueba1
prueba2
prueba3
prueba4
prueba5
[hpddpers@acr-ljump ~]$

Te puede interesar

COMPÁRTEME

Deja un comentario