Globali

  • :help parola chiave - apri il manuale (di vim) per keyword
  • :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

Movimento del cursore

  • h - muovi cursore a sinistra
  • j - muovi cursore in basso
  • k - muovi cursore in alto
  • l - muovi cursore a destra
  • H - vai in cima alla schermata
  • M - vai a metà della schermata
  • L - vai in fondo alla schermata
  • 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)
  • % - vai al carattere corrispondente (le coppie supportate automaticamente sono: '()', '{}', '[]' - per ulteriori informazioni usa :h matchpairs in vim)
  • 0 - 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 + d - sposta avanti di mezza schermata
  • Ctrl + u - sposta indietro di mezza schermata
Tip Anteponi un comando di movimento del cursore con un numero per ripeterlo. Per esempio, 4j muove in basso di 4 linee.

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 - change (replace) to the end of the line
  • 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

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

Registri

  • :reg - mostra il contenuto dei registri
  • "xy - copia dentro al registro x
  • "xp - incolla il contenuto del registro x
Tip I registri sono salvati in ~/.viminfo e saranno ricaricati al prossimo avvio di vim.
Tip 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

Taglia e incolla

  • yy - copia una linea
  • 2yy - copia due linee
  • yw - copia una parola
  • 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
  • D - cancella (taglia) fino alla fine della linea
  • d$ - cancella (taglia) fino alla fine della linea
  • x - cancella (taglia) carattere

Uscire

  • :w - scrivi (salva) il file, ma non uscire
  • :w !sudo tee % - scrivi il file corrente usando sudo
  • :wq or :x or ZZ - scrivi (salva) ed esci
  • :q - esci (fallisce se ci sono modifiche non salvate)
  • :q! or ZQ - esci e ignora modifiche non salvate
  • :wqa - scrivi (salva) ed esci su tutti i tab

Cerca e sostituisci

  • /pattern - cerca pattern
  • ?pattern - cerca pattern all'indietro
  • \vpattern - pattern 'very magic': i caratteri non alfanumerici sono interpretati come simboli speciali di regex (nessun carattere di escape necessario)
  • n - ripeti ricerca nella stessa direzione
  • N - ripeti ricerca nella direzione opposta
  • :%s/old/new/g - sostituisci old con new in tutto il file
  • :%s/old/new/gc - sostituisci old con new in tutto il file senza chiedere conferma
  • :noh - rimuove l'evidenziazione dei risultati della ricerca

Cerca in più file

  • :vimgrep /pattern/ {file} - cerca il pattern in più file
e.g. :vimgrep /foo/ **/*
  • :cn - salta al prossimo risultato
  • :cp - salta al risultato precedente
  • :copen - apri una finestra contenente la lista di risultati

Lavorare con file multipli

  • :e file - modifica file in un nuovo buffer
  • :bnext or :bn - vai al buffer successivo
  • :bprev or :bp - vai al buffer precedente
  • :bd - cancella un buffer (chiudi un file)
  • :ls - elenca tutti i buffer aperti
  • :sp file - apri file in un nuovo buffer e dividi la finestra
  • :vsp file - apri file in un nuovo buffer e dividi la finestra verticalmente
  • Ctrl + ws - dividi finestra
  • Ctrl + ww - cambia finestra
  • Ctrl + wq - esci da una finestra
  • Ctrl + wv - dividi finestra verticalmente
  • Ctrl + wh - muovi cursore sul buffer successivo (a destra)
  • Ctrl + wl - muovi cursore sul buffer precedente (a sinistra)
  • Ctrl + wj - muovi cursore sul buffer inferiore (divisione orizzontale)
  • Ctrl + wk - muovi cursore sul buffer superiore (divisione orizzontale)

Tabs

  • :tabnew or :tabnew file - apri un file in un nuovo tab
  • Ctrl + wT - muovi la finestra corrente nel suo proprio tab
  • gt or :tabnext or :tabn - vai al tab successivo
  • gT or :tabprev or :tabp - vai al tab precedente
  • #gt - vai al tab numero #
  • :tabmove # - muovi il tab corrente nella #-esima posizione (l'indice parte da 0)
  • :tabclose or :tabc - chiudi il tab corrente e tutte le sue finestre
  • :tabonly or :tabo - chiudi tutti i tab tranne quello corrente
  • :tabdo command - esegui il comando in tutti i tab (es. :tabdo q - chiude tutti i tab aperti)