Vim - Appunti di riferimento
blog-image

Vim - Appunti di riferimento

  • Tuesday, Feb 12, 2019

Una lista sintetica con i comandi più utili dell'editor vim in un comodo cheatsheet (bigino, appunti di riferimento )

(Versione PDF Stampabile)

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