Una lista sintetica con i comandi più utili dell'editor vim in un comodo cheatsheet (bigino, appunti di riferimento )
Principali comandi VIM
Globali
:help parola_chiave - apri il manuale (di vim) per _parola_chiave_
:saveas File - salva il file con nome
:close - chiudi il pannello corrente
K - apri la pagina del manuale (man) relativa alla parola sotto al cursore
Uscire
:w - scrivi (salva) il file, ma non uscire
:wsudo - scrivi il file corrente usando sudo
:wq - scrivi (salva) ed esci
:x - scrivi (salva) ed esci
:q - esci (fallisce se ci sono modifiche non salvate)
:qbang - esci e ignora modifiche non salvate
:wqa - scrivi (salva) ed esci su tutti i tab
Modalità inserimento - inserisci/aggiungi testo
i - inserisci prima del cursore
I - inserisci all'inizio della linea
a - inserisci (aggiungi) dopo il cursore
A - inserisci (aggiungi) alla fine della linea
o - aggiungi (apri) una nuova linea sotto la linea corrente
O - aggiungi (apri) una nuova linea sopra la linea corrente
ea - inserisci (aggiungi) alla fine della parola
Esc - esci dalla modalità inserimento
Modifica
r - sostituisci un singolo carattere
J - unisci la linea sottostante con quella corrente
gJ - unisci la linea sottostante con quella corrente senza spazi in mezzo
gwip - riformatta paragrafo
cc - cambia (sostituisci) l'intera linea
c$ - cambia (sostituisci) fino alla fine della linea
ciw - cambia (sostituisci) una parola intera
cw - cambia (sostituisci) fino alla fine della parola
s - cancella carattere e sostituisci testo
S - cancella linea e sostituisci testo (uguale a cc)
xp - scambia due lettere (cancella e incolla)
u - annulla l'ultima modifica
Ctrl+r - ripeti l'ultima modifica
. - ripeti l'ultimo comando
Taglia e incolla
yy - copia una linea
2yy - copia due linee
yw - copia una parola
yiw - copia la parola sotto il cursore
yaw - copia la parola sotto il cursore e lo spazio prima o dopo
y$ - copia fino alla fine della linea
p - incolla dopo il cursore
P - incolla prima del cursore
dd - cancella (taglia) una linea
2dd - cancella (taglia) due linee
dw - cancella (taglia) una parola
diw - cancella (taglia) la parola sotto il cursore
daw - cancella (taglia) la parola sotto il cursore e lo spazio prima o dopo
D - cancella (taglia) fino alla fine della linea
d$ - cancella (taglia) fino alla fine della linea
x - cancella (taglia) carattere
Cerca e sostituisci
/Pattern - cerca pattern
?Pattern - cerca pattern all'indietro
\vPattern - pattern 'very magic': i caratteri non alfanumerici sono interpretati come simboli speciali regex
n - ripeti ricerca nella stessa direzione
N - ripeti ricerca nella direzione opposta
:%/Old/New/g - sostituisci old con new in tutto il file
:%/Old/New/gc - sostituisci old con new in tutto il file senza chiedere conferma
:noh - rimuove l'evidenziazione dei risultati della ricerca
Movimento del cursore
h - muovi cursore a sinistra
j - muovi cursore in basso
k - muovi cursore in alto
l - muovi cursore a destra
w - salta avanti fino all'inizio di una parola
W - salta avanti fino all'inizio di una parola (le parole possono contenere punteggiatura)
e - salta avanti fino alla fine di una parola
E - salta avanti fino alla fine di una parola (le parole possono contenere punteggiatura)
b - salta indietro fino all'inizio di una parola
B - salta indietro fino all'inizio di una parola (le parole possono contenere punteggiatura)
H - vai in cima alla schermata
M - vai a metà della schermata
L - vai in fondo alla schermata
zero - salta all'inizio della linea
^ - salta fino al primo carattere non vuoto della linea
$ - salta alla fine della linea
g_ - salta fino all'ultimo carattere non vuoto della linea
gg - vai alla prima linea del documento
G - vai all'ultima linea del documento
5G - vai alla linea 5
fx - salta alla prossima occorrenza del carattere x
tx - salta a prima della prossima occorrenza del carattere x
Fx - salta all'occorrenza precedente del carattere x
Tx - salta al carattere successivo alla precedente occorrenza del carattere x
; - ripeti l'ultimo movimento f, t, F o T
, - ripeti l'ultimo movimento f, t, F o T, all'indietro
} - salta al prossimo paragrafo (o funzione/blocco, se si scrive codice)
{ - salta al paragrafo precedente (o funzione/blocco, se si scrive codice)
zz - centra il cursore nella schermata
Ctrl+e - sposta la schermata in basso di una linea (senza muovere il cursore)
Ctrl+y - sposta la schermata in alto di una linea (senza muovere il cursore)
Ctrl+b - sposta indietro di un'intera schermata
Ctrl+f - sposta avanti di un'intera schermata
Ctrl+u - sposta indietro di mezza schermata
Ctrl+d - sposta avanti di mezza schermata
% - vai al carattere corrispondente (le coppie supportate automaticamente sono: '()', '{}', '[]' - per ulteriori informazioni usa <>>:h matchpairs</>> in vim)
tip - Anteponi un comando di movimento del cursore con un numero per ripeterlo. Per esempio, <kbd>4j</kbd> muove in basso di 4 linee.
Seleziona testo (modalità visuale)
v - inizia modalità visuale, seleziona linee, quindi esegui un comando (per esempio y-copia)
V - inizia modalità visuale su linee intere
o - vai all'altro capo dell'area selezionata
Ctrl+v - inizia modalità visuale su blocchi
O - vai ad un altro angolo del blocco
aw - seleziona una parola
ab - un blocco con ()
aB - un blocco con {}
ib - un blocco con () (parentesi escluse)
iB - un blocco con {} (parentesi escluse)
Esc - esci dalla modalità visuale
Comandi della modalità visuale
> - scorri testo a destra
< - scorri testo a sinistra
y - copia testo selezionato
d - elimina testo selezionato
~ - inverti maiuscole e minuscole
Tabs
:TabNew - apri un file in un nuovo tab
Ctrl+w T - muovi la finestra corrente nel suo proprio tab
gt - vai al tab successivo
gT - vai al tab precedente
hashgt - vai al tab numero #
:tabmove - muovi il tab corrente nella #-esima posizione (l'indice parte da 0)
:tabc - chiudi il tab corrente e tutte le sue finestre
:tabo - chiudi tutti i tab tranne quello corrente
:tabdo - esegui il comando in tutti i tab (es. :tabdo q - chiude tutti i tab aperti)
Lavorare con file multipli
:e - modifica file in un nuovo buffer
:bnext - vai al buffer successivo
:bprev - vai al buffer precedente
:ls - elenca tutti i buffer aperti
:bd - cancella un buffer (chiudi un file)
:sp - apri file in un nuovo buffer e dividi la finestra
:vsp - apri file in un nuovo buffer e dividi la finestra verticalmente
Ctrl+w s - dividi finestra
Ctrl+w w - cambia finestra
Ctrl+w q - esci da una finestra
Ctrl+w v - dividi finestra verticalmente
Ctrl+w h - muovi cursore sul buffer successivo (a destra)
Ctrl+w l - muovi cursore sul buffer precedente (a sinistra)
Ctrl+w j - muovi cursore sul buffer inferiore (divisione orizzontale)
Ctrl+w k - muovi cursore sul buffer superiore (divisione orizzontale)
Cerca in più file
:vimgrep - cerca il pattern in più file
:cn - salta al prossimo risultato
:cp - salta al risultato precedente
:copen - apri una finestra contenente la lista di risultati
Registri
:reg - mostra il contenuto dei registri
"xy - incolla il contenuto del registro x
"xp - copia dentro al registro x
tip1 - I registri sono salvati in ~/.viminfo e saranno ricaricati al prossimo avvio di vim.
tip2 - Il registro 0 contiene sempre il valore dell'ultimo comando di copia.
Segnalibri
:marks - elenca i segnalibri
mA - imposta il segnalibro A alla posizione corrente
`A - salta alla posizione del segnalibro A
y`A - copia il testo fino alla posizione del segnalibro A
Macro
qa - registra la macro a
q - smetti di registrare macro
@a - esegui la macro a
@@ - esegui di nuovo l'ultima macro eseguita