lunes, diciembre 19, 2011

Editor VI, recordatorio de comandos

Unir dos ficheros de texto (merge files):
Abrimos el primero cuando llamamos al VI.
Colocamos el cursor donde corresponda (el comando añade el segundo fichero justo debajo del cursor).
:r fichero

Unir dos líneas de texto contiguas:
Nos colocamos en la primera línea.
J

Ir al final de la línea:
$

Borrar hasta el final de línea:
D

Moverse al principio de la palabra anterior:
b

Ir a la línea 25:
25G

Ir a la última línea:
G

Copiar una línea y pegarla justo debajo (duplicar la línea):
Y (copia la línea actual).
p (pega lo copiado debajo de la línea actual).

Cambiar la palabra actual:
wc (word change)


Repetir el comando:
.

Avanzar de palabra en palabra:
w

Mostrar los números de línea:
:set nu

Deshabilitar los números de línea:
:set nu!

Borrar las siguientes 1000 líneas
d1000

Eliminar las líneas que cumplan un patrón determinado:
:g/patrón/d

Eliminar las líneas que NO cumplan un patrón:
:g!/patrón/d

Deshacer el último cambio en la línea:
U

Deshacer el último cambio:
u

Deshacer los 3 últimos cambios:
3u


Cambiar a mayúsculas o minúsculas:
Para este tema hay que recordar que la letra "g" es para cambir de un tipo al otro y algunas cosas más:
gu significa cambiar a minúsculas
gU significa cambiar a mayúsulas
w significa palabras (word).
G es para ir al final del fichero.
$ es para ir al final de línea.

Por lo tanto comandos válidos son:

gUw -> Cambiar la palabra a letras mayúsculas.
guw -> Cmabiar la palabra a letras minúsculas.
gU100w -> Cambiar las siguientes 100 palabras a mayúsculas.
gu100w -> Cambiar las siguientes 100 palabras a minúsculas.
gU$ -> Cambiar la línea actual a mayúsculas.
gu$ -> Cambiar la línea actual a minúsculas.
gUG -> Todo en mayúsculas hasta el final.
guG -> Todo en minúsculas hasta el final.

Comando de sustitución en el modo EX:
:s sustituye en la línea actual.
:%s sustituye en todo el fichero.

Cambiar en la línea actual la primera palabra "hola" que encuentre por "HOLA".
:s/hola/HOLA/

Cambiar en la línea actual todas las palabras "hola" por "HOLA".
:s/hola/HOLA/g

Cambiar todos los "hola" del fichero por "HOLA":
:%s/hola/HOLA/g

%s es lo mismo que 1,$, por lo que también podemos hacer:
:1,$s/hola/HOLA/g

Cambiar "hola" por "HOLA" de la línea 100 a la 200:
:100,200s/hola/HOLA/g

Para que pida confirmación en cada cambio añadimos la letra c al final:
:100,200s/hola/HOLA/gc

Para que ignore las mayúsculas/minúsculas
:100,200s/hola/adios/gci

Para que no ignore las mayúsculas/minúsculas:
:100,200s/hola/adios/gcI

Reemplazar la palabra "hola" por "HOLA" en las líneas que cumplan un patrón:
:g/patron/s/hola/HOLA/g

Caracteres especiales o "metacaracteres" para formar el patrón:

^ es el inicio de la expresión regular (inicio de línea).
$ es el final de línea.
. es cualquier carácter menos el salto de línea.
* es cero o más caracteres.
[] es cualquier carácter de los que se encuentra entre corchetes.
\ es el carácter de escape. Así \$ se refiere al carácter $ y no al final de línea.
\s es el espacio en blanco
\d es un dígito

Más metacaracteres aquí.


Un sencillo manual PDF con más comandos de VI aquí.

No hay comentarios: