UNIX Vi Cheatsheet
Movimientos Entrada de Texto
h Un carácter a la izquierda i inserta texto antes del cursor
j Un carácter abajo a agrega luego del cursor (append)
k Un carácter arriba I Inserta al comienzo de la línea
l Un carácter a la derecha A Agrega al final de la línea
b Comienzo de la palabra actual o agrega una nueva línea bajo la actual
e Fin de la palabra actual O agrega una nueva línea sobre la actual
w comienzo de la próxima palabra
we fin de la próxima palabra (combinación) Saliendo de Vi
0 (cero), ^ comienzo de la línea actual ZZ Graba (si hay cambios) y sale
$ Fin de la línea actual :wq Graba y luego sale
+ Comienzo de la próxima línea :q Sale (solo si no hay modificaciones)
- Comienzo de la línea anterior :q! Sale descartando los cambios
:n linea número n
G Fin del Archivo Cambiando Texto
1G Primera línea del archivo r Cambia solo el carácter bajo el cursor
Ctrl+f Una pantalla (página) hacia abajo R Desde el carácter bajo el cursor, sobre escribe
mientras se entre texto hasta presionar Esc.
Ctrl-b Una pantalla (página) hacia arriba
Ctrl+d Media pantalla hacia abajo cw desde el carácter bajo el cursos, cambia solo
hasta completar la palabra
Ctrl+u Media pantalla hacia arriba
) Se mueve a la próxima sentencia c$,C Desde el carácter bajo el cursor, cambia la línea
mientras escriba.
( Sentencia anterior
} Próximo párrafo
{ Párrafo siguiente Borrando texto
H Se mueve a la primera línea en pantalla x borra un solo carácter
M Se mueve a la mitad de la pantalla dw una palabra alfabética incluido el blanco sig.
L Se mueve a la última línea de la pantalla dW toda una palabra delimitada por blanco, incluido
% Se mueve entre pares de ( { [ ] } ) dd Borra toda la línea ( 3dd borra 3 líneas)
d$, D Borra todo hasta el final de línea
Comandos y objetos d} Borra hasta el final del párrafo
operador numero objeto c2w (copia 2 palabras) :5,30d Borra de la línea 5 a la 30
numero operador objeto 2cw (copia 2 palabras)
Operadores Copiando y pegando
c Cambia P Pega antes del cursor
d Borra p Pega luego del cursor
y Copia yy Copia (yank) la línea actual
Objetos 6yy Copia seis líneas
w una palabra hacia adelante :3,10yy Copia de la línea 3 a la 10
b una palabra hacia atrás yw copia la palabra actual.
e fin de palabra Nota Puedo con yw usar las mismas indicaciones que las líneas
H,M,L primera, medía y últ. línea en pantalla La idea es copiar, moverme, pegar.
),( próxima sentencia y sentencia anterior
},{ próximo párrafo y párrafo anterior
^,$ comienzo de línea y fin de línea
Uso de buffers "letrados" Otros comandos útiles
Vi tiene además del buffer temporal, 26 buffers adicionales . repite el último comando
indexados de la 'a' a la 'z'.
n. Repite el último comando n veces
ayy copia una línea al buffer a J Junta la próxima línea a la actual.
Ayy Agrega (append) una línea al buffer a u Restaura el último cambio
a1077 Copia 10 líneas al buffer a U Restaura la línea actual
a10dd Borra 10 líneas y las deja en el buffer a ~ Cambia de Mayúsculas a minúsculas y v.v
ap copia el contenido de a bajo la línea actual
Búsquedas Sustitución de cadenas
/ busca hacia abajo una cadena de La forma mas sencilla es mediante el comando s que
caracteres. tiene como formato el siguiente:
? Busca hacia arriba :n1,n2s/old/new/gc
n repite la última búsqueda en el mismo donde n1 y n2 son indicadores de posición. old y new
sentido son las cadenas a buscar y sustituir. g indica que el
N repite la última búsqueda en sentido cambio es global al contexto indicado por n1 y n2.
contrario. c es para solicitar confirmar cada cambio.
fchar busca hacia adelante un carácter en la :%s/old/new/g sustituye old con new en todo el
archivo
línea actual :.,$s/old/new/g sustituye old con new desde la
posición del cursor al final.
Fchar busca hacia atrás un carácter en la :^,.s/old/new/g sustituye old con new desde el
comienzo a la posición del cursor.
línea actual :& repite la última sustitución.
; repite la última búsqueda de carácter en el
mismo sentido
% busca pares de ( ),{ },[ ] Grabar y Leer desde archivo
:w file escribe el buffer actual al archivo file
Mas de un archivo :w>>file realiza un append al archivo actual
vi file1 file2 ... filen :5,10w file escribe las lineas 5 a 10 en file
:n se mieve al archivo n :5,10w>>file appende de líneas 5 a 10 en file
:rew vuelve al archivo 1 :r file carga file en el archivo actual
:e! restaura todos los archivos al original en :!ls lista archivos en el directorio actual…
disco. ejecuta un ls.
Indentando
:1,$> Mueve a la derecha todo el archivo un salto
:1,$< Mueve a la izquierda todo el archivo
%s/^/ /g inserta espacios al comienzo de cada línea
:20>> Indenta las próximas 20 líneas