Vi, editor de consola

Índice

1. Descripción
2. Invocación
3. Movimientos del cursor
4. Texto
     4.1 Insertar
     4.2 Borrar
     4.3 Cambiar
     4.4 Copiar / pegar
     4.5 Buscar /substituir
5. Repetir y deshacer
6. Comandos del shell
7. Operaciones con archivos
8. Opciones de entorno
9. Macros


1. Descripción

Características:
Vi es el editor estándar de los Sistemas Operativos de la familia Unix/Linux. En principio puede resultar un poco difícil,sobre todo para los usuarios de Windows.Sin embargo, dado que es prácticamente el único editor que puedes encontrar pre-instalado en cualquier PC o Servidor con Unix/Linux, aprender a usarlo es muy aconsejable.

2. Invocación

$vi                                    Editar un texto sin nombre
$vi archivo                            Editar un archivo (nuevo o no)
$vi archivo1 archivo2                  Editar lista de archivos
$vi +n archivo                         Editar archivo en la línea n
$vi +/txt archivo                      Editar archivo en la 1a línea donde aparece txt

3. Movimientos del cursor

k                                       Arriba
j                                       Abajo
h                                       Izquierda
l                                       Derecha
0                                       Inicio de línea
$                                       Fin de línea
w                                       Word: Avanzar palabra
b                                       Back: Retroceder palabra
e                                       End: Al final de palabra
H                                       Home: Esquina sup. izq. de la ventana
L                                       Last: Esquina inf. izq. de la ventana
crtl+u                                  Window up: Subir ventana
crtl+d                                  Window down: Bajar ventana
crlt+b                                  Page back: Retroceder página
crtl+f                                  Page forward: Avanzar página
nG                                      Go: Salta a la línea n.
1G                                      A la primera línea
$G                                      A la última línea
fcar                                    Buscar en la línea el carácter car (hacia delante)
Fcar                                    Buscar en la línea el carácter car (hacia atrás)

4. Texto

4.1 Insertar

i                                       Insertar (delante del cursor)
I                                       Insertar al principio de la línea
a                                       Añadir (detrás del cursor)
A                                       Añadir al final de la línea
o                                       Insertar una línea debajo de la actual
O                                       Insertar una línea encima de la actual

4.2 Borrar

x                                       Borrar caracter actual
X                                       Borrar caracter anterior
dd                                      Borrar línea actual
D                                       Borrar hasta final de línea
dw                                      Borrar palabra

4.3 Cambiar

rcar                                    Reemplazar el caracter actual por car
R                                       Reemplazar texto desde la posición del cursor
s                                       Substituir el caracter actual por texto a insertar
S                                       Substituir la línea actual
C                                       Cambiar hasta el final de la línea
cw                                      Cambiar palabra
J                                       Unir a la línea actual la siguiente

4.4 Copiar / pegar

yy                                      Copiar en el buffer la línea actual
nyy                                     Copiar en el buffer n líneas desde la actual
yw                                      Copiar en el buffer la palabra actual
ynw                                     Copiar en el buffer n palabras desde la actual
p                                       Pega el buffer detrás del cursor
P                                       Pega el buffer delante del cursor

4.5 Buscar /substituir

%                                       Busca el caracter delimitador ( ) [ ] { } que balancea el actual (Dentro de un entorno salta al delimitador inicial)
/ExpReg                                 Busca hacia delante la expresión regular ExpReg
?ExpReg                                 Busca hacia atrás la expresión regular ExpReg
n                                       Repite la última búsqueda
N                                       Repite la última búsqueda en el sentido contrario
:s/txt/txt2                             Substituye el texto txt por txt2 la primera vez que aparece en la línea
:s/txt/txt2/g                           Substituye todas las apariciones de txt por txt2 en la línea
:m,n s/txt/txt2/g                       Substituye en el rango de líneas [m,n]
:%s/txt/txt2/g                          Substituye txt por txt2, en todo el archivo

5. Repetir y deshacer

.                                       Repetir último comando de actualización (Borrado/Inserción/Cambio)
u                                       Deshacer último comando de actualización
U                                       Deshacer todos los cambios en la línea actual

6. Comandos del shell

:sh                                     Invoca un nuevo shell. Al salir continua la edición
:!CmdShell                              Ejecuta un comando del sistema operativo
:r!CmdShell                             Ejecuta un comando del S.O. e inserta su salida en la posición del cursor
:!!                                     Repite el último comando ejecutado en un shell

7. Operaciones con archivos

:w                                      Graba las modificaciones efectuadas en el archivo
:w archivo                              Escribe el texto actual en archivo (Sólo si no existía)
:q                                      Salir (si no hay cambios)
:q!                                     Salir (sin grabar)
:wq                                     Guardar cambios y salir
:x                                      Guardar cambios y salir
ZZ                                      Guardar cambios y salir
:=                                      Muestra el número total de líneas del archivo
:.=                                     Muestra el número de línea actual
crtl+G                                  Muestra el nombre del archivo, línea actual, número total de líneas y 
                                        porcentaje recorrido del archivo
:r archivo2                             suma archivo2 dentro del archivo actual, si grabas :w solo el
                                        archivo inicial sera afectado
:e archivo2                             abre separadamente archivo2
:ls                                     lista los archivos abiertos
:b1                                     abre archivo1, :b2 abre archivo2, :b3 abre archivo3 y asi sucesivamente
:bn                                     cambia al proximo archivo
:bp                                     cambia al archivo anterior
vi -o archivo1 archivo2 archivo3        abre simultaneamente los 3 archivos, dividiendo la tela horizontalmente
                                        * se aplica a las opciones con 3 archivos (también puedes hacerlo con 2)
Ctrl+w +w                               * Dejas el Ctrl presionado y pulsas 2 veces "w", te cambia de "división"
                                        o sea, cambias entre el archivo1, archivo2, y archivo3 dentro de la tela
Ctrl+w +j                               * Dejas el Ctrl presionado y pulsas 1 vez "w", y 1 vez "j",te cambia de
                                        "división" hacia abajo, cambias entre el archivo1, archivo2, y archivo3
                                        dentro de la tela de edicción
Ctrl+w +k                               * igual al anterior, pero te cambia hacia arriba
vi -O archivo1 archivo2 archivo3        abre simultaneamente los 3 archivos, dividiendo la tela verticalmente
Ctrl+w +h                               * igual al "Ctrl+w +j", pero te cambia hacia la izquierda
Ctrl+w +l                               * igual al anterior, pero te cambia hacia la derecha

8. Opciones de entorno

:set opción                             Activa la opción de vi correspondiente
:set noopción                           Desactiva la opción de vi correspondiente
all                                     Muestra todas las opciones y sus valores
number                                  Muestra numeración de líneas
list                                    Muestra caracteres de control
ic                                      Ignora mayúsculas/minúsculas en las búsquedas

9. Macros

q letra                                 Activa la grabación de la macro nombrada como la letra pulsada
                                        tras la "q" (pej qa)
                                        Pulsando ESC y la letra "q" de nuevo queda finalizada la grabación.
@ letra                                 Repite la macro llamada como la letra (pej @a). Se puede repetir esta
                                        macro varias veces anteponiendo un número a la "@"
                                        (pej 23@a para repetir 23 veces)
Ejemplo                                 qaiholaESCq grabará una macro llamada "a" que escribe "hola"
                                        20@a escribirá 20 veces seguidas "hola"