Come faccio a uscire da qui?!?
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 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 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:
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 --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
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
mentre si è in modalità normale.Ci sono tre tipi di modalità visuali, con un effetto leggermente diverso:
- : Modalità visuale
- + : Modalità visuale a riga
- + : 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
+ . 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
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