Chuleta de vi

Opciones de Línea de Comandos:

vi fichero

Editar fichero con vi

vi fichero1 fichero2 Editar ficheros secuencialmente con vi
view fichero o  vi -R fichero Abrir fichero con vi en modo sólo lectura
vi -r fichero Recuperar fichero y cambios recientes tras un "crash" del editor
vi -t tag Buscar la "tag" y editar en su definición
vi + fichero abrir fichero con el cursor en la última línea
vi +n fichero abrir fichero, cursor en la línea n
vi -c comando fichero abrir fichero , ejecutar comando (suele tratarse de una búsqueda o un número de línea (POSIX)
vi +/patrón fichero abrir fichero directamente donde se encuentre el patrón
 

Marcas de Posición

 mx marca la posición actual como x
 `x mueve el cursor a la marca x
 `` vuelve a la marca o contexto anterior
 'x mueve el cursor al principio de la línea que contiene la marca x
 '' vuelve al principio de la línea que contiene la marca anterior

Comandos de vi

h, j, k, l izquierda, abajo, arriba, derecha  
w, W, b, B adelante y atrás palabra por palabra
e, E ir a final de palabra
), ( inicio de la frase siguiente, de la frase anterior
}, { inicio del párrafo siguiente, del párrafo anterior
]], [[ inicio de la siguiente sección, de la sección anterior
0, $ primera y última posición de la línea donde está el cursor
^ primer carácter alfanumérico de la línea
+,  - primer carácter alfanumérico de la línea siguiente, de la línea anterior
n | columna n de la línea donde está el cursor
H, M, L Primera línea, Línea central, Última línea de la pantalla
nH, nL n número de líneas tras la Primera o antes de la Última línea
 

Números de Línea en vi

ctrl G Muestra el número de línea donde está el cursor
nG ir la la línea número n
G ir la la última línea del fichero
:n ir a la línea n del fichero
 

Desplazamientos en pantalla con vi

ctrl F, ctrl B avanzar o retroceder una pantalla
ctrl D, ctrl U avanzar o retroceder media pantalla
ctrl E, ctrl Y mostrar una línea más al principio o al final de la pantalla
ctrl L refrescar la pantalla sin desplazarse por el documento
z enter, z., z- reubicar la línea del cursor: situarla al Principio, en el Centro o al Final de la pantalla

Búsquedas en vi

/pattern, ?pattern buscar un patrón del cursor hacia adelante, del cursor hacia atrás
n, N repetir la última búsqueda en la misma dirección o en la dirección opuesta
/, ? repetir la búsqueda anterior hacia adelante o hacia atrás
fx, Fx buscar el carácter x hacia adelante o hacia atrás en la línea donde está el cursor
tx, Tx buscar hacia adelante o hacia atrás Antes o Después del carácter x en la línea donde está el cursor
; repetir la búsqueda en la línea donde está el cursor
, repetir la búsqueda en dirección contraria

 

Comandos de Edición

Inserción
 i, a Insertar texto Antes, Después del cursor
 I, A insertar texto Antes del principio, Tras el final de la línea
 o, O crear una nueva línea Encima, Debajo del cursor
Copiar (yank)
 yw copiar palabra
 yy copiar la línea donde está el cursor
 "ayy copiar la línea donde está el cursor al búfer a (a-z). los nombres en mayúsculas añaden texto
 ymovimiento  copia el texto entre el cursor y el destino del movimiento
 p, P pegar el texto copiado Antes, Después del cursor
 "aP pegar texto del búfer a (a-z) Antes del cursor
Modificaciones
 r reemplazar carácter
 cw corregir palabra
 cc corregir la línea donde está el cursor
 cmovimiento  cambia el texto entre el cursor y el destino del movimiento
 C cambia desde el cursor hasta el final de la línea
 R sobreescribe caracteres
 S sustituír: borra la línea donde está el cursor e inserta texto
 s sustituír: borra un carácter e inserta texto
Otros Comandos
 . repetir el último comando de edición
 u, U dehace lo último que se haya editado, devuelve la línea a su estado original
 J borrar líneas
Borrar, Mover
 x borra el carácter bajo el cursor
 X borra el carácter anterior al cursor
 dw borra palabra
 dd borra la línea donde está el cursor
 dmovimiento borra el texto entre el cursor y el destino del movimiento
 D borra hasta el final de la línea
 p, P pega el texto borrado Antes, Después del cursor
 "np pega tras el cursor el texto del búfer de texto borrado número n tras el cursor (guarda los últimos 9 )
comandos de edición de ex
 :m mueve líneas
 :co o :t copia líneas
 :.,$d borra desde la línea donde está el cursor hasta el final del fichero
 :.,/patrón/co$ copia desde la línea donde está el cursor hasta la línea donde está el patrón al final del fichero.
 :30,60m0 mueve las líneas 30 a 60 al principio del fichero

Comandos de Salida 

 zz, :x, :wq escribe (guarda) el fichero y lo cierra [los 3 casos]    :q cierra el fichero    :e # editar fichero opcional
 :w grabar fichero  :q! cerrar el fichero desechando los cambios no guardados  :vi invocar el editor vi desde ex
 :w! guardar el fichero sin hacer caso de la protección contra escritura  Q salir de vi y arrancar ex  : usar un comando ex en el editor vi
 :30,60w nuevofichero guardar de la línea 30 a la 60 como nuevo fichero  :n editar el siguiente fichero 
 :30,60w>> fichero añadir las líneas 30 a 60 a un fichero  :e fichero2  editar fichero2 sin salir de vi  # alternate filename (substitutes into ex command)
 :w %.nuevo escribe el contenido del búfer de edición a un fichero llamado fichero.nuevo  :e! devuelve el fichero al estado en que se encontraba cuando se guardó por última vez  % current filename (substitutes into ex command)