Articolo originale: Vim Editor Modes Explained di freeCodeCamp.org

Tradotto e adattato da: Dario Di Cillo

Dato che Vim è pensato sia per modificare del codice esistente che per scrivere del codice nuovo, il suo utilizzo avviene in diverse modalità a seconda dello scopo.

Modalità normale

Di default, Vim parte in modalità normale, alla quale si può accedere anche da altre modalità premendo Esc o <C-[>.

In modalità normale, i tasti non funzionano come ci si può aspettare. Non inseriscono testo nel documento, mentre premendo alcuni tasti è possibile:

Muovere il cursore

  • h sposta di un carattere a sinistra
  • j sposta di una riga in basso
  • k sposta di una riga in alto
  • l sposta di un carattere a destra

Come molti comandi di Vim, il movimento tra le righe può avere un numero come prefisso per spostarsi di più righe alla volta:

  • 4j sposta di 4 righe in basso
  • 6k sposta di 6 righe in alto

Movimenti di base tra la parole:

  • w sposta all'inizio della parola successiva
  • b sposta all'inizio della parola precedente
  • e sposta alla fine della parola
  • W sposta all'inizio della parola successiva dopo uno spazio
  • B sposta all'inizio della parola precedente dopo uno spazio
  • E sposta alla fine della parola dopo uno spazio

Movimenti nella riga:

  • 0 sposta all'inizio della riga
  • $ sposta alla fine della riga

Modificare il testo

Passare ad altre modalità

La modalità normale è quella in cui si dovrebbe passare la maggior parte del tempo usando Vim. Questo è ciò che rende Vim diverso dagli altri editor di testo.

In modalità normale, ci sono diversi modi per spostarsi in un file aperto. In aggiunta all'uso delle frecce, puoi usare anche i tasti h (sinistra), j (giù), k (su) e l (destra). Ciò è particolarmente utile a chi non piace doversi spostare dalla tastiera per fare delle modifiche.

Puoi anche fare modifiche a singoli caratteri in modalità normale. Ad esempio, per sostituire un singolo carattere, sposta il cursore su di esso e premi r, seguito dal carattere che vuoi inserire. Analogamente, puoi eliminare un singolo carattere muovendoti il cursore su di esso e premenedo x.

Per tornare indietro, premi u in modalità normale. Tornerai indietro fino all'ultima volta in cui eri in modalità normale. Se vuoi rieseguire (annullare il comando "indietro") premi Ctrl+r in modalità normale.

Modalità di inserimento

Questa è la seconda modalità più utilizzata e sarà quella con il comportamento più familiare per la maggior parte delle persone. Una volta in questa modalità, premere dei tasti inserirà caratteri nel documento proprio come un comune editor di testo. Per passare alla modalità di inserimento puoi usare il comando insert dalla modalità normale.

I comandi insert includono:

  • i (insert) passa immediatamente alla modalità di inserimento
  • a (append) sposta il cursore dopo il carattere attuale e passa alla modalità di inserimento
  • o inserisce una nuova riga sotto quella corrente e passa in modalità di inserimento nella nuova riga

Questi comandi hanno anche delle varianti maiuscole:

  • I sposta il cursore all'inizio della riga e passa in modalità di inserimento
  • A sposta il cursore alla fine della riga e passa in modalità di inserimento
  • O  inserisce una nuova riga sopra quella corrente e passa in modalità di inserimento nella nuova riga

Ci sono così tanti altri modi per inserire del testo in Vim che non posso elencarli qui, ma questi sono i più semplici. Fai attenzione a non stare troppo in modalità di inserimento: Vim non è pensato per stare in modalità di inserimento tutto il tempo.

Per lasciare la modalità di inserimento e tornare a quella normale, premi Esc o <C-[>

Modalità visuale

La modalità visuale viene usata per selezionare del testo, in modo simile a ciò che si fa cliccando e spostando il mouse. Selezionare del testo permette di applicare solo alla selezione specifica comandi come copia, cancella, sostituisci e così via .

Per selezionare del testo:

  • Premi v per passare alla modalità visuale (e indicare il punto di partenza della selezione)
  • Sposta il cursore sul punto di selezione desiderato (Vim ti mostrerà il testo selezionato in evidenza)

La modalità visuale ha anche delle varianti:

  • V entra in modalità visuale di riga e permette di selezionare il testo per righe
  • <C-V> entra in modalità di blocco visuale e permette di selezionare il testo in blocchi, muovendo il cursore per ottenere selezioni di testo rettangolari

Per lasciare la modalità visuale e tornare a quella normale, premi Esc o <C-[>.

La modalità visuale, in sostanza, ha più sottotipi: visuale, blocco visuale e visuale per riga

  • visuale: come descritto sopra (v)
  • blocco visuale: seleziona una regione rettangolare (<ctrl>+v)
  • visuale a livello di linea: selezione righe intere (<shift>+v)

Modalità di comando

La modalità di comando ha svariati comandi che permettono di fare cose che in modalità normale non sono facilmente realizzabili. Per passare alla modalità di comando, digita ’:’ dalla modalità normale e poi premi il comando, che dovrebbe apparire nella parte inferiore della finestra. Ad esempio, per fare una ricerca globale ed effettuare una sostituzione, digita :%s/foo/bar/g (tutti i "foo" verranno sotituiti con "bar").

  • : passa in modalità di comando
  • % significa su tutte le righe
  • s significa sostituisci
  • /foo è un'espressione regolare per cercare le cose da sostituire
  • /bar/ è un'espressione regolare per effettuare la sostituzione
  • /g vuol dire globale, altrimenti il comando verrebbe eseguito solo sulla riga

Vim ha molti altri metodi di cui puoi leggere nella documentazione di supporto, :h o :help.

Modalità sostituzione

La modalità sostituzione permette di rimpiazzare il testo esistente scrivendo direttamente su di esso. Prima di entrare in questa modalità, passa alla modalità normale e metti il cursore in corrispondenza del primo carattere da sostituire e poi premi ‘R’ (maiuscola) per passare alla modalità sostituzione. A questo punto, qualsiasi cosa scrivi, sostituirà il testo esistente. Il cursore si muove automaticamente al carattere successivo, proprio come in modalità di inserimento. L'unica differenza è che ogni carattere che scrivi rimpiazzerà quello esistente.