Vim CheatSheet
Global
:h[elp] keyword - apri l’help di “keyword”
:sav[eas] nomefile - salva file come
clo[se] - chiudi finestra corrente
ter[minal] - apri finestra terminale
K - apri pagina man per la parola sotto il cursore
Salvare e Uscire
:w - salva, ma non uscire
:w !sudo tee % - salva usando sudo
:wq o :x o ZZ - salva ed esci
:q - esci (fallisce se ci sono modifiche non salvate)
:q! o ZQ - esci senza salvare
:wqa - salva ed esci da tutti i tab
Cursore
h - muovi a sinistra
j - muovi in basso
k - muovi in alto
l - muovi a destra
gj - muovi in basso (g volte)
gk - muovi in alto (g volte)
H - muovi all’inizio dello schermo
M - muovi in mezzo allo schermo
L - muovi in fondo allo schermo
w - inizio prossima parola
W - inizio prossima parola (la parola può contenere punteggiatura)
e - fine prossima parola
E - fine prossima parola (punteggiatura)
b - inizio parola precedente
B - inizio parola precedente (punteggiatura)
0 - inizio della riga
^ - primo carattere non vuoto della riga
$ - fine della riga
g_ - ultimo carattere non vuoto della riga
gg - prima riga del file
G - ultima riga del file
5gg o 5G - vai a riga 5
gd - vai a dichiarazione locale
gD - vai a dichiarazione globale
fx - prossima occorrenza del carattere x
tx - (carattere precedente) prossima occorrenza di x
Fx - occorrenza precedente di x
Tx - (carattere successivo) occorrenza precedente di x
; - ripeti il comando f,t,F,T precedente
, - ripeti al contrario
} - prossimo paragrafo (o funzione/blocco)
{ - paragrafo precedente
zz - centra il cursore nello schermo
Ctrl+e - muovi schermo in basso di una riga (senza muovere il cursore)
Ctrl+y - muovi schermo in alto di una riga (uguale)
Ctrl+b - vai indietro di uno schermo
Ctrl+f - vai avanti di uno schermo
Ctrl+d - vai avanti di mezzo schermo
Ctrl+u - vai indietro di mezzo schermo
Insert Mode
i - inserisci prima del cursore
I - inserisci all’inizio della riga
a - inserisci dopo il cursore
A - inserisci alla fine della riga
o - crea e inserisci in nuova riga sotto quella corrente
O - crea e inserisci in nuova riga sopra quella corrente
ea - inserisci alla fine della prossima parola
Ctrl+j - crea nuova riga (in Insert Mode)
Ctrl+t - sposta la riga a avanti di un tab (in Insert Mode)
Ctrl+d - sposta la riga indietro di un tab (in Inser Mode)
Ctrl+ox - entra temporaneamente in modalità normale per eseguire il comando x
Modificare testo
x - elimina carattere
r - rimpiazza carattere
R - rimpiazza caratteri (finchè non premi ESC)
J - unisci la linea sotto a quella corrente con uno spazio in mezzo
gJ - senza spazio
gwip - ri-formatta paragrafo
cc - rimpiazza intera riga
ciw - rimpiazza intera parola
s - cancella carattere e rimpiazza
u - undo
U - ripristina linea corrente
Ctrl+r - redo
. - ripeti ultimo comando
Visual Mode
v - entra in Visual Mode
o oppure O - vai a inizio/fine del testo selezionato
Ctrl+v - Visual Block Mode
aw - seleziona parola
ab - seleziona un blocco con ()
aB - blocco con {}
at - blocco con <>
ib - contenuto del blocco tra ()
iB - contenuto del blocco tra {}
it - contenuto del blocco <>
ESC - esci da Visual Mode
possiamo usare ( o { al posto di b o B (rispettivamente)
> - shifta il testo a destra
< - shifta il testo a sinistra
y - copia testo selezionato
p - incolla testo selezionato
d - cancella testo selezionato
~ - inverti maiusc/minusc testo selezionato
u - converti testo selezionato a minuscolo
U - converti testo selezionato a maiuscolo
Registri
:reg[isters] - mostra contenuto resitri
"xy - copia nel registro x
"xp - incolla contenuto del registro x
"+y - copia nel registro clipboard di sistema
"+p - incolla contenuto del registro clipboard di sistema
I registri sono memorizzati in ~/.viminfo e ri-caricati al prossimo restart di vim
Posizione e marks
:marks - lista dei marks
ma - setta il mark a alla posizione corrente
'a - salta alla posizione del mark a
y'a - copia il testo alla posizione del mark a
'0 - vai a posizione in cui è stato precedentemente chiuso Vim
'" - vai a posizione in cui eri quando hai modificato il file l’ultima volta
'. - vai a posizione dell’ultima modifica
'' - vai a poisizione prima dell’ultimo salto
:ju[mps] - lista dei salti
Ctrl+i - vai a posizione più nuova nella lista dei salti
Ctrl+o - più vecchia
:changes - lista dei cambiamenti
g, - vai a posizione più nuova nella lista dei cambiamenti
g; - più vecchia
per saltare a un mark possiamo usare sia ` (backtick) che ’ (apostrofo). Con l’apostrofo saltiamo all’inizio (prima posizione non vuota) della riga contenente il mark
Copia, incolla, taglia
yy - copia riga
2yy - copia 2 righe
yw - copia i caratteri della parola tra il cursore e l’inizio della prossima parola
yiw - copia parola sotto al cursore
yaw - copia parola sotto al cursore e lo spazio prima/dopo essa
Y - copia fino alla fine della riga
p - incolla dopo il cursore
P - incolla prima del cursore
gp - incolla dopo il cursore e setta il cursore dopo il nuovo testo
gP - incolla prima del cursore e setta il cursore dopo il nuovo testo
dd - elimina (taglia) riga
2dd - elimina (taglia) 2 righe
dw - elimina (taglia) i caratteri della parola tra il cursore e l’inizio della prossima parola
diw - elimina (taglia) parola sotto al cursore
daw - elimina (taglia) parola sotto al cursore e lo spazio prima/dopo essa
D - elimina (taglia) fino alla fine della riga
x - elimina (taglia) carattere
:.,$d - elimina (taglia) tutte le righe del file a partire dal cursore
:1,5d - elimina (taglia) le righe dalla 1 alla 5
Trova e sostituisci
/pattern - cerca “pattern”
?pattern - cerca “pattern” all’indietro
n - prossima occorrenza (stessa direzione)
N - prossima occorrenza (direzione opposta)
:%s/vecchio/nuovo/g - rimpiazza tutte le occorrenze di “vecchio” con “nuovo”
:%s/vecchio/nuovo/gc - come sopra ma con la conferma
:noh[lsearch] - rimuovi gli highlight delle parole cercate
Tabs
:tabnew - apri file in un nuovo tab
gt o tabn[ext] - passa a prossimo tab
gT o tabp[revious] - tab precedente
#gt - vai a tab numero #
:tabm[ove] # - muovi tab corrente a posizione numero # (indice parte da 0)
:tabc[lose] - chiudi tab corrente e tutte le sue finestre
:tabo[nly] - chiudi tutti i tab tranne quello corrente
:tabdo command - esegui il comando command in tutti i tab (esempio :tabdo q -> chiudi tutti i tab)
File multipli
:e[dit] file - apri un nuovo file “file” (in un nuovo buffer)
:bn[ext] - vai al prossimo buffer
:bp[revious] - buffer precedente
:bd[elete] - elimina buffere (chiudi file)
:b[uffer]# - vai a buffer di indice #
:b[uffer] file - vai a buffer di “file”
:ls o :buffers - mostra buffer aperti
:sp[lit] file - apri nuovo file “file” in nuovo buffer e splitta le finestre
:vs[plit] file - come sopra ma splitta verticalmente
:vert[ical] ba[ll] - apri tutti i buffer in finestre splittate verticali
:tab ba[ll] - modifica i buffer come tabs