Come modificare un file in vim

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 è una fork di vim con delle impostazioni di base migliori e il supporto per il linguaggio di programmazione Lua che può essere quindi usato per personalizzare il sistema (anche in vim si possono fare personalizzazioni, ma in un linguaggio specifico chiamato “vimscript”). Ci sono anche altre differenze ma, essendo praticamente identico a vim nella sostanza, 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:

: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:

vimtutor

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à. Inoltre, in questa modalità possiamo fare numerose modifiche al testo, come rimuovere frasi, spostare righe e simili. Farlo da questa modalità ci consente di utilizzare delle scorciatoie da tastiera intuitive e pratiche.

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 di 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 :. In questo modo, inizieremo a scrivere nell’ultima riga in fondo al terminale, che è la posizione dove possiamo vedere i comandi che stiamo scrivendo. Dopo il : possiamo inserire vari comandi, sfruttando anche la funzionalità dell’autocompletamento (premendo il tasto Tab).

Eccone alcuni di uso comune:

  • :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. Recentemente, avendo migrato le mie impostazioni al linguaggio Lua, ho iniziato ad usare Packer.nvim
  • 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). Per questa funzionalità neovim ha anche integrato il supporto per i LSP.
  • Vim-fugitive - Wrapper che permette di usare i comandi di Git dentro a Vim. Più di recente ho iniziato ad utilizzare lazygit, che è un programma fantastico, soprattutto quando lo si integra in neovim!
  • 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