Logo del sito
Come faccio a uscire da qui?!?
Tutti, la prima volta che aprono vim

Generalmente si ha a che fare con vim per la prima volta per errore o per caso. Nel terminale ci si presenta una vista familiare, quella di un editor di testo, ma ogni volta che si tenta di scrivere qualcosa non succede niente, oppure succedono cose che non ci aspetteremmo.

Comunque, vim è spesso la scelta più ovvia quando ci si ritrova a modificare un file tramite connessione ssh. Troviamo questo programma in praticamente ogni distribuzione linux, sia desktop che server, quindi essere in grado di usarlo può essere un utile strumento da tenere nella nostra cassetta degli attrezzi.

Vediamo insieme come si fa!

Non voglio imparare vim, devo solo modificare un file

In tal caso, i passaggi che ti consiglio sono i seguenti:

  • Appena aperto il file in vim (vim nomefile.txt nel terminale) premi il tasto i per entrare in modalità inserimento (puoi vedere se sei in modalità inserimento nell'angolo in basso a sinistra)
  • Modifica il file come sei normalmente abituato a fare
  • Premi il tasto ESC per tornare alla modalità normale
  • Digita :wq per salvare (write) il file e uscire (quit)
  • In alternativa, digita :q! per uscire senza salvare le modifiche

Vorrei imparare ad usare vim

In questo caso, lascia che inizi spiegando cos'è vim e le basi del suo funzionamento.

Vim è un editor di testo, basato sul programma vi (infatti il nome sta per vi improved, cioè "vi migliorato"). Il beneficio principale di usare un editor come vim è che tutto il lavoro viene fatto tramite la tastiera, quindi la mano non dovrà mai toccare il mouse. Ciò migliora la situazione sia a livello ergonomico (in molti casi) sia a livello di velocità, dopo che ci si ha preso la mano.

Prima di tutto, vi consiglio di installare neovim (nvim) piuttosto che vim. Nvim è un progetto più recente, con più programmatori che contribuiscono al codice e ha una struttura che gli permette di essere meglio orientato a sviluppi futuri. Comunque, essendo praticamente identico a vim, le informazioni di questa guida valgono per entrambi i programmi.

Ecco l'aspetto dell'applicazione quando lanciamo il comando nvim dal terminale:

Interfaccia base di nvim

Una volta installato, la prima cosa che dovrete fare sarà aprirlo e digitare il seguente comando:

1:Tutor

Questo comando aprirà un documento interattivo che contiene una guida di base all'uso di nvim. Nel caso stiate invece usando vim, allora potete lanciare questo comando direttamente dal terminale:

1vimtutor

Una cosa importante da comprendere di vim è che per modificare i file si dovrà imparare ad usare varie "modalità" del programma. Le modalità principali sono le seguenti:

  • Normale
  • Inserimento
  • Comando
  • Visuale
  • Sostituzione

La modalità normale

Questa modalità viene principalmente usata per navigare nel testo ed entrare nelle altre modalità. Anche se vim è un editor di testo, questa è la modalità che dobbiamo usare di più, in quanto ci permette di saltare in vari punti del nostro file con agilità.

La modalità inserimento

Per entrare in questa modalità, premere il tasto i sulla tastiera mentre si è in modalità normale. In basso a sinistra comparirà la scritta --INSERISCI-- (o qualcosa simile) per far notare il cambiamento.

Questa modalità è quella che ci permette di scrivere. Mentre si è in questa modalità non ci si renderà quasi conto della differenza fra questo programma e uno strumento come il Blocco Note, in quanto si comporta nello stesso modo.

Per uscire da questa modalità (e da quasi tutte le altre) basta premere il tasto ESC tornando così alla modalità normale.

La modalità comando

Entriamo in modalità comando ogni volta che, dalla modalità normale, digitiamo il carattere :. Non noteremo alcuna differenza a livello di interfaccia, ma dopo il : possiamo inserire vari comandi, sfruttando anche la funzionalità dell'autocompletamento (premendo il tasto Tab). Ecco alcuni comandi comuni:

  • :w - Salva il file
  • :q - Esce dal programma
  • :q! - Esce dal programma senza salvare
  • :help - Mostra la schermata di aiuto del programma
  • :set - Permette di modificare alcune impostazioni del programma in tempo reale
  • :e [nome_file] - Modifica il file indicato (lo crea nel caso non esista)

Ovviamente ce ne sono moltissimi altri, e ogni plugin aggiunge i propri.

La modalità visuale

Questa modalità è quella che ci permette di selezionare del testo. Possiamo farlo con l'obiettivo di copiarlo, di indentarlo, di commentarlo o per altre ragioni. Per entrare in questa modalità bisogna premere il tasto v mentre si è in modalità normale.

Ci sono tre tipi di modalità visuali, con un effetto leggermente diverso:

  • v : Modalità visuale
  • SHIFT + v : Modalità visuale a riga
  • CTRL + v : Modalità visuale a blocco

Vi consiglio di fare ulteriori ricerche al riguardo se siete interessati a capire quali sono le differenze e quando è più utile usare una modalità piuttosto dell'altra.

Per imparare ad usare la modalità visuale, vi suggerisco di guardare qualche video al riguardo, in quanto sarebbe abbastanza difficile capirci qualcosa da un articolo testuale.

La modalità sostituzione

Questa modalità la si attiva premendo il tasto SHIFT + R. Dopo aver digitato questa combinazione, sembrerà di essere entrati nella modalità inserimento, ma ogni volta che digitiamo una lettera, questa sostituirà il testo che era già presente.

Possiamo invece sostituire un singolo carattere digitando r mentre si è sopra al carattere da sostituire, per poi premere la lettera desiderata.

Altre informazioni utili su vim

Vim (e quindi anche nvim) sono programmi estremamente personalizzabili. Moltissime estensioni sono state create per integrare funzionalità che sono in grado di trasformare un semplice editor di testi in un IDE di tutto rispetto. Praticamente tutte le estensioni di vim sono reperibili tramite Github, per questo è importante leggere bene il loro README prima di utilizzarle per assicurarsi di installarle correttamente e per avere informazioni utili al riguardo.

Alcune di queste estensioni sono:

  • Vim-Plug - Manager di estensioni. Delle alternative molto usate sono Pathogen e Vundle.
  • COC - Conquer of Completion, integra varie estensioni di VS Code e aggiunge molte funzionalità legate alle sintassi dei linguaggi di programmazione (come la funzione "Vai alla definizione" e altro)
  • Vim-fugitive - Wrapper che permette di usare i comandi di Git dentro a Vim
  • fzf - Fuzzy Finder. In particolare se usato insieme a ripgrep permette di aprire velocemente i file inserendo anche solo parti del loro percorso o nome.
  • lualine - Un'estensione estetica che permette di migliorare la barra informativa che si trova sotto il testo, per visualizzare anche qualche informazione in più.

Una volta acquisite le basi e aver preso pratica con il sistema, ecco alcuni concetti più avanzati sui quali potreste concentrare la vostra attenzione:

  • Cosa sono i buffer
  • Come si usano le finestre split e le schede
  • Cosa sono i registri
  • Come creare macro
  • Creare script usando il linguaggio vimscript o lua per eseguirli in vim