Vim più “confortevole”

Uno degli editor più conosciuti e popolari presente fin dagli inizi in tutti i sistemi Unix, è Vi. Ma la sua “maledizione” è l’essere osteggiato da diverse parti perché presenta una curva di apprendimento piuttosto ripida dovuta principalmente al fatto di essere un editor modale.

Un editor modale prevede che l’effetto di ciò che si sta scrivendo è funzione dalla modalità nella quale l’editor si trova in quel momento. È tale caratteristica a renderlo poco intuitivo.

Vi vs Vim

Alle caratteristiche originali di Vi – poche in verità – sono state aggiunte nel tempo una serie di nuove funzioni con lo sviluppo del programma Vim (Vim IMproved). Oggi, tutto ciò che c’è in Vi è disponibile in Vim ma – ovviamente – non il contrario secondo il seguente schema che mostra alcune funzioni in comune:

Una lista – non esaustiva – di funzioni aggiuntive in Vim vedono:

  • Supporto al syntax highlighting (evidenziazione e colorazione della sintassi), code folding (raggruppamento di linee di codice, utile quando si lavora con file molto lunghi) e molto altro per i più disparati linguaggi come C/C++, Python, Perl, script shell e via a seguire;
  • Possibilità di editing dei file utilizzando protocolli di rete come SSH e HTTP;
  • Possibilità di editare file all’interno di archivi e archivi compressi (tar, gzip, zip, etc);
  • Inclusione dello strumento vimdiff che permette la comparazione tra file.

Ma probabilmente una delle nuove funzioni più apprezzate dai programmatori è la possibilità di poter dividere l’area di lavoro (orizzontalmente e/o verticalmente) al fine di editare più file contemporaneamente.

Ad esempio, ipotizziamo di aprire Vim su un file da editare (in figura un sorgente Awk):

A questo punto ci rendiamo conto che dobbiamo editare un altro file, ad esempio un sorgente Perl, come possiamo fare? Non c’è necessità alcuna di lanciare un’altra sessione di Vim, ma è sufficiente commutare – pigiando il tasto Esc – l’editor in modalità comandi (qualora fosse, ad esempio, in modalità inserimento) quindi effettuare lo splitting verticale dello schermo digitando :vsplit oppure la sequenza di tasti Ctrl-W seguiti dalla pressione del tasto V per vedere lo schermo dividersi in due metà:

Per passare dalla semi-finestra di sinistra a quella di destra utilizzeremo la combinazione Ctrl+W seguita da L mentre per il passaggio da destra a sinistra Ctrl-W quindi il tasto H. A questo punto per aprire il file Perl (ma naturalmente vale per qualsiasi file!) assicuriamoci che l’editor sia in modalità comandi quindi digitiamo :e /percorso/al/file.pl aiutandoci, eventualmente, con l’autocompletamento (tasto Tab). Il risultato è visibile nello screenshot che segue, da un lato il sorgente Awk e dall’altro quello Perl.

Ma possiamo fare di più, se ci occorre editare, ad esempio, anche uno script shell legato ai due sorgenti precedenti e per tale motivo non si vogliono chiudere gli altri 2 file, è sufficiente dare, sempre in modalità comandi, uno :split (oppure Ctrl-W seguito da S) per ottenere una divisione orizzontale dello schermo e nella nuova semi-finestra aprire lo script shell seguendo la medesima dinamica del passo precedente: ora per spostarci dalla semi-finestra superiore a quella inferiore utilizzeremo Ctrl-W seguito da J, mentre per spostarci nella semi-finestra superiore da quella inferiore Ctrl-W quindi K.

Ma un attimo, facciamo un passo indietro. Di default l’editor Vim presente uno schema di colori come nell’immagine che segue.

E allora come mai nelle immagini precedenti lo schema dei colori ricorda un po’ lo storico file manager MC (Midnight Commander)? Semplice, perché tra le diverse funzioni Vim permette anche di cambiare lo schema dei colori al fine di adeguarsi ai gusti di chi dovrà utilizzarlo. Di default sono presenti un certo numero di schemi (18 di preciso) e per utilizzarli (impostando quello che più piace) è sufficiente digitare:

:colorscheme

seguito da uno spazio e dal pulsante Tab, ovvero la sequenza “:colorscheme+<spazio>+Tab“. Apparirà così una barra in basso con il nome dei temi.

È  possibile selezionarne uno e per applicarlo è sufficiente premere Invio. Le scelte predefinite non possono definirsi propriamente entusiasmanti, per tale motivo è nato il progetto ~/.vim/colors che permette di aggiungere centinaia di temi (al momento circa 900!) adottando la semplice procedura riportata di seguito.

Prima di tutto assicuriamoci – utilizzando il gestore dei pacchetti della distribuzione in uso – di aver installato il programma Git presente praticamente nei repository di tutte le distribuzioni. A questo punto apriamo un terminale e diamo il comando:

git clone https://github.com/flazz/vim-colorschemes.git ~/.vim

il quale come primo passo creerà la cartella nascosta .vim nella home utente quindi clonerà al suo interno il repositorio vim-colorschemes.

Ora che abbiamo centinaia di preset di schemi di colori la dinamica d’utilizzo è sempre la stessa. Se conosciamo lo schema da applicare utilizzeremo:

:colorscheme nomeschema

Se invece vogliamo curiosare tra i diversi schemi utilizziamo sempre la sequenza “:colorscheme+<spazio>+Tab“.

Qualche esempio. Schema adobe con sorgente Awk.

Schema aiseered con sorgente Go.

Schema playroom con sorgente Python.

Siccome gli schemi clonati in locale sono – al momento di scrivere – ben 971 (!) appare evidente che per trovare quello che piace di più non ci si può affidare al caso. Allora il suggerimento è quello di andare al link del progetto ~/.vim/colors per cercare quello che piace di più e che si adatta ai nostri gusti. Una volta trovato il già riportato comando:

:colorscheme nomeschema

lo applicherà. Facciamo presente che alcuni schemi presenti nel progetto ~/.vim/colors potrebbero non essere (ancora) presenti nel repositorio clonato in locale. Ad esempio, al momento di scrivere questo primo iniziale tutorial su Vim, è il caso dello schema xcodedark. In questi casi è sufficiente cliccare in basso a destra sul link View in GitHub e dalla cartella colors scaricare il file xcodedark.vim per salvarlo localmente in ~/.vim/colors (da qui il nome del progetto!), ed ecco come appare su sorgente Python:

eventualmente da impostare come tema predefinito.

Rimane, però, un ultimo problema da risolvere: se ora provassimo a chiudere la sessione di Vim alla successiva riapertura avremo di nuovo lo schema di default perdendo la scelta precedentemente fatta. Allora per ritrovare lo schema al riavvio successivo senza doverla ogni volta impostare è sufficiente impartire in un terminale il comando:

echo ‘colorscheme nomeschema’ >> ~/.vimrc

il quale creerà un file di nome .vimrc nella home utente e aggiungerà ad esso la riga colorscheme nomeschema. Se invece .vimrc dovesse essere già presente semplicemente accoderà la riga colorscheme nomeschema alla fine del file. Tutto qui!

Per dovere di cronaca è d’uopo ricordare che Il file .vimrc contiene le impostazioni di configurazione per inizializzare Vim all’avvio. Quasi mai è presente nella home utente e in genere lo crea l’utente stesso al bisogno proprio per personalizzare il comportamento di Vim rispetto alle impostazioni di default della distribuzione. I curiosi che volessero un esempio di file .vimrc possono impartire, da Vim, il comando:

:e $VIMRUNTIME/vimrc_example.vim

Potrebbero interessarti anche...

Una risposta

  1. 19 Aprile 2020

    […] prima parte si è fatto cenno alla modifica dell’aspetto grafico dello storico editor (versione IMproved) […]