Invocación de vi
vi
| Editar un texto sin nombre archivo asociado |
vi archivo
| Editar archivo (Nuevo o no) |
vi lista de archivos
| Editar lista de archivos |
vi + n archivo
| Editar archivo en la línea n |
vi +/ txt archivo
| Editar archivo en la 1ª línea donde aparece txt |
Desplazarse en el documento poco a poco
![]() h
| un carácter hacia la izquierda |
![]() j
| un carácter hacia abajo |
![]() k
| un carácter hacia arriba |
![]() l
| un carácter hacia la derecha |
Desplazarse en el documento más rápido
0
| Comienzo de línea |
$
| Final de línea |
w
| Comienzo siguiente palabra (word) |
b
| Comienzo de la palabra actual (back) |
e
| Final de la palabra actual (end) |
H
| Esquina superior izquierda de la pantalla (home) |
L
| Esquina inferior izquierda de la pantalla (last) |
^u
| Subir pantalla (up) |
^d
| Bajar pantalla (down) |
^b
| Retroceder página (back) |
^ #b
| Retroceder página # líneas (back) |
^f
| Avanzar página (forward) |
^ #f
| Avanzar página # líneas (back) |
#G
| Salta a la #-ésima línea (go) |
1G
| Salta a la primera línea |
$G
| Salta a la última línea |
z
| Hacer la línea actual la superior de la pantalla |
zz
| Hace la línea actual la central de la pantalla |
z-
| Hace la línea actual la última de la pantalla |
f car
| Busca el carácter car (hacia delante) |
F car
| Busca el carácter car (hacia atrás) |
Marcas sobre el documento
m car
| Marca la línea actual con un carácter (a-z) |
' car
| Mueve a la línea marcada con carácter (a-z) |
Insertar texto
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 (open) |
O
| Insertar una línea encima de la actual (open) |
Borrar texto
x
| Borrar caracter actual |
X
| Borrar caracter anterior |
dd
| Borrar línea actual (delete) |
D
| Borrar hasta final de línea (delete) |
d CmdMov
| Borrar hasta la posición indicada por el mandato de movimiento CmdMov |
dw
| Borrar palabra (delete word) |
Cambiar texto
r car
| Reemplazar el caracter actual por car ( replace) |
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 |
c CmdMov
| Cambiar hasta la posición indicada por el mandato de movimiento CmdMov |
cw
| Cambiar palabra (change word) |
J
| Unir a la línea actual la siguiente (join) |
Copiar y pegar
CmdBorrado | Cortar (El último borrado pasa automáticamente al búfer |
yy
| Copiar en el búfer la línea actual |
#yy
| Copiar en el búfer # línea desde la actual |
y CmdMov
| Copiar en el búfer hasta la posición indicada por el mandato de movimiento CmdMov (yank) |
p
| Pega el búfer detrás de la posición del cursor |
P
| Pega el búfer delante de la posición del cursor |
" carCmdBorrado
| Cortar hacia el búfer de nombre car (a-z) |
" carCmdCopia
| Copiar hacia el búfer de nombre car (a-z) |
" carCmdPegado
| Pegar desde el búfer de nombre car (a-z) |
Buscar y 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 (next) |
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 (global) |
: ![]() s/ txt/ txt2/g
|
Substituye (idem) en el rango de líneas [![]() |
Repetir y deshacer
.
| Repetir último mandato de actualización (Borrado/Inserción/Cambio) |
u
| Deshacer último mandato de actualización |
U
| Deshacer todos los cambios en la línea actual (ojo, en la línea actual) |
Mandatos para el shell
:sh
| Invoca un nuevo shell. Al salir continua la edición |
:! CmdShell
| Ejecuta el mandato CmdShell del shell |
:r! CmdShell
| Ejecuta el mandato CmdShell del shell e inserta su salida en la posición del cursor |
!! CmdShell
| Ejecuta un mandato CmdShell del shell e inserta su salida en la posición del cursor |
:!!
| Repite el último comando ejecutado en un shell |
: ![]() ! CmdShell
|
Ejecuta un comando del shell
sobre el rango de líneas [![]() |
Operaciones con ficheros
:r archivo
| Inserta el contenido de archivo debajo de la línea actual (read) |
:w
| Graba las modificaciones efectuadas en el archivo actual (write) |
:w archivo
| Escribe el texto actual en archivo (Sólo si no existiera) |
:w! archivo
| Escribe el texto actual en archivo |
: ![]() w archivo
|
Escribe el rango de líneas [![]() |
:e archivo
| Edita un archivo alternativo siempre que almacenemos el contenido del archivo actual o no haya cambios |
:e! archivo
| Edita un archivo alternativo incondicionalmente |
:e #
| Conmuta con el archivo alternativo, siempre que almacenemos el contenido del archivo actual o no haya cambios |
:e! #
| Conmuta con el archivo alternativo incondicionalmente |
:n o :next
| Editar el siguiente archivo de la lista de archivos que se le han dado al vi |
:rew o rewind
| Volver al primer archivo de la lista |
:q
| Salir siempre que almacenemos el archivo actual o no haya cambios (quit) |
:q!
| Salir incondicionalmente |
:wq o :x o ZZ
| Grabar cambios y salir (ZZ: dormir) |
Control de comandos
<ESC>
| Finalizar/Anular mandato |
^l
| Refresca (re-escribe) la pantalla |
#Cmd | Repite el mandato Cmd #-veces |
: ![]() |
Ejecuta el mandato Cmd sobre el rango de líneas
[![]() ![]() ![]() |
:set opción
| Activa la opción de vi correspondiente |
:set noopción
| Desactiva la opción de vi correspondiente |
:set all
| Muestra todas las opciones y sus valores |
:set ai
| Modo de autoindentación |
:set list
| Muestra caracteres de control que acompañan al texto |
:set nu[mber]
| Muestra numeración de líneas |
:set vb
| Substituye el pitido por una indicación visual |
:set wrap
| Mostrar partidas las líneas que no caben en la pantalla |
:set ...
| Véa usted mismo ;-) |
(En la confección de esta página he contado con la colaboración de mi
compañero Arturo González Escribano.
De los macros y otras cosas más, ya hablaremos otro día.)