RIFERIMENTO RAPIDO VIM
Modalità, navigazione, editing, ricerca, macro, buffer
Modalità
Cambio Modalità
| i | Modalità insert (prima del cursore) |
| a | Modalità insert (dopo il cursore) |
| o | Inserisce riga sotto ed entra in insert |
| O | Inserisce riga sopra ed entra in insert |
| v | Modalità visual (carattere) |
| V | Modalità visual (riga) |
| Ctrl+v | Modalità visual block |
| : | Modalità command-line |
| R | Modalità replace |
| Esc | Torna alla modalità normale |
Navigazione
Movimento Carattere e Riga
| h j k l | Sinistra, giù, su, destra |
| 0 / ^ | Inizio riga / primo carattere non blank |
| $ | Fine riga |
| w / W | Parola successiva / PAROLA |
| b / B | Parola precedente / PAROLA |
| e / E | Fine parola / PAROLA |
| f{c} / F{c} | Trova carattere in avanti / indietro |
| t{c} / T{c} | Fino a carattere in avanti / indietro |
Movimento Schermo e File
| gg / G | Vai alla prima / ultima riga |
| :{n} | Vai alla riga n |
| Ctrl+d / Ctrl+u | Metà pagina giù / su |
| Ctrl+f / Ctrl+b | Pagina intera giù / su |
| H / M / L | Alto / centro / basso dello schermo |
| % | Salta alla parentesi corrispondente |
Editing
Insert e Append
| I | Insert all'inizio della riga |
| A | Append alla fine della riga |
| ea | Append alla fine della parola |
| gi | Insert all'ultima posizione di insert |
Elimina e Cambia
| x / X | Elimina carattere sotto / prima del cursore |
| dd | Elimina riga |
| dw | Elimina parola |
| d$ / D | Elimina fino a fine riga |
| cc / S | Cambia intera riga |
| cw | Cambia parola |
| c$ / C | Cambia fino a fine riga |
| ci" / ci( | Cambia dentro virgolette / parentesi |
Copia e Incolla
| yy | Copia (yank) riga |
| yw | Copia parola |
| y$ | Copia fino a fine riga |
| p / P | Incolla dopo / prima del cursore |
| J | Unisce riga sotto alla corrente |
Annulla e Ripeti
| u | Annulla |
| Ctrl+r | Ripristina |
| . | Ripete l'ultimo comando |
Ricerca e Sostituzione
Ricerca
| /pattern | Cerca in avanti |
| ?pattern | Cerca indietro |
| n / N | Prossima / precedente corrispondenza |
| * | Cerca parola sotto cursore (in avanti) |
| # | Cerca parola sotto cursore (indietro) |
Sostituzione
:s/old/new/ " replace first on line
:s/old/new/g " replace all on line
:%s/old/new/g " replace all in file
:%s/old/new/gc " replace all, confirm each
Modalità Visual
Selezione
| v | Inizia selezione carattere |
| V | Inizia selezione riga |
| Ctrl+v | Inizia selezione blocco |
| o | Sposta all'altro estremo della selezione |
| gv | Ri-seleziona l'ultima selezione visual |
Azioni sulla Selezione
| d | Elimina selezione |
| y | Copia selezione |
| c | Cambia selezione |
| > | Indenta selezione |
| < | Deindenta selezione |
| ~ | Inverti maiuscolo/minuscolo |
| U / u | Maiuscolo / minuscolo selezione |
Buffer e Finestre
Buffer
| :ls | Elenca buffer aperti |
| :bn / :bp | Buffer successivo / precedente |
| :b{n} | Vai al buffer n |
| :bd | Chiudi buffer corrente |
| :e file | Apri file in nuovo buffer |
Finestre
| :sp file | Split orizzontale |
| :vsp file | Split verticale |
| Ctrl+w h/j/k/l | Naviga alla finestra |
| Ctrl+w = | Equalizza dimensioni finestre |
| Ctrl+w q | Chiudi finestra |
Tab
| :tabnew file | Apri file in nuova tab |
| gt / gT | Tab successiva / precedente |
| :tabclose | Chiudi tab corrente |
Registri
Usare i Registri
| "ay | Copia nel registro a |
| "ap | Incolla dal registro a |
| "Ay | Aggiunge copia al registro a |
| :reg | Mostra tutti i registri |
Registri Speciali
| "" | Senza nome (ultimo delete/yank) |
| "0 | Ultimo yank |
| "+ | Clipboard di sistema |
| "/" | Ultimo pattern di ricerca |
| ". | Ultimo testo inserito |
| "_ | Buco nero (scarta) |
Macro
Registrare e Riprodurre
| q{a} | Inizia registrazione macro nel registro a |
| q | Ferma registrazione |
| @{a} | Riproduci macro dal registro a |
| @@ | Ripete l'ultima macro |
| 5@a | Riproduci macro a 5 volte |
Esempio Macro
qa " start recording into a
I// " insert // at line start
Esc j " return to normal, move down
q " stop recording
10@a " comment next 10 lines
Impostazioni
Opzioni Comuni
:set number " show line numbers
:set relativenumber " relative line numbers
:set tabstop=4 " tab width
:set expandtab " spaces instead of tabs
:set ignorecase " case-insensitive search
Display e Comportamento
:set wrap / nowrap " toggle line wrapping
:set hlsearch " highlight search matches
:set incsearch " incremental search
:set cursorline " highlight current line
:syntax on " enable syntax highlighting
Operazioni sui File
Salva e Chiudi
| :w | Salva |
| :w file | Salva come file |
| :q | Esci (fallisce se non salvato) |
| :q! | Esci senza salvare |
| :wq / :x / ZZ | Salva ed esci |
| :wa | Salva tutti i buffer |
| :qa | Chiudi tutti i buffer |
Info File e Comandi Esterni
| Ctrl+g | Mostra info file |
| :!cmd | Esegui comando shell |
| :r !cmd | Inserisce output del comando |
| :r file | Inserisce contenuto del file |
Text Object
Oggetti Inner e Around
| iw / aw | Dentro / attorno alla parola |
| is / as | Dentro / attorno alla frase |
| ip / ap | Dentro / attorno al paragrafo |
| i" / a" | Dentro / attorno a virgolette doppie |
| i' / a' | Dentro / attorno a virgolette singole |
| i( / a( | Dentro / attorno a parentesi |
| i{ / a{ | Dentro / attorno a graffe |
| it / at | Dentro / attorno a tag HTML |
Combinazioni Comuni
ciw " change inner word
di" " delete inside quotes
ya{ " yank around braces
vip " select inner paragraph
Segni e Salti
Segni
| m{a} | Imposta segno a alla posizione cursore |
| 'a | Salta alla riga del segno a |
| `a | Salta alla posizione esatta del segno a |
| :marks | Elenca tutti i segni |
Lista Salti
| Ctrl+o | Salta alla posizione precedente |
| Ctrl+i | Salta alla posizione successiva |
| :jumps | Mostra lista salti |
| '' | Salta all'ultima posizione di salto |