News Ticker

Velocizzare l'uso di Vim

Sul nostro amato sistema operativo esistono innumerevoli editor di testo per terminale, da quelle più indicati all'uso per utenti neofiti come nano, a quelli nati per gli sviluppatori quali Emacs.

Personalmente, da quando ho iniziato ad usare sistemi Linux/Unix, la mia scelta è sempre ricaduta su Vi (e, successivamente, su Vim), e sono talmente abituato ad usare quello che risulta essere il mio editor perferito anche laddove sono presenti alternative grafiche.

La differenza tra i due è presto detta: creato come Vi da Bill Joy nel lontano 1976, ha avuto successivamente decide di porting e modifiche più o meno radicali. Nel 1991 lo sviluppatore Bram Moolenaar rilasciò "Vi iMproved" o Vim, sulla piattaforma Amiga, estendendo il lavoro di Joy per ottenere due risultati: ottimizzare l'editor per la scrittura di codice ed aggiungerci un'interfaccia grafica.

Usando Vim negli anni, ho sempre cercato di mantenerne un uso il più "classico" possibile (per garantirmi, nel lavoro, la retrocompatibilità con Vi), ma alcune feature specifiche permettono di velocizzare di molto il lavoro; ecco quelle che uso più di frequente.

Salvare ed uscire
Come il suo parente, la classica sequenza di tasti per salvare ed uscire da Vim è sempre quella, da lanciare in command mode:

:wq

Dove la lettera 'w' sta per write e la lettera 'q' sta per quit. Spesso, si fa seguire all'ultima lettera il carattere ! per forzarne il salvataggio.
Seppur questo metodo è sempre valido, il più delle volte utilizzo la combinazione di tasti:

Shift+ZZ

Il risultato ottenuto è lo stesso, ma in questo modo risparmio del tempo e dei tasti!

Visual Mode
Utilissimo per la selezione o la cancellazione di più righe, spesso mettersi a contare il numero di righe su cui vogliamo che il comando agisca non è l'operazione più comoda del mondo. Certo, possiamo procedere una riga alla volta ripetendo il comando (tramite il carattere '.'), ma soprattutto quando si parla di tante righe ci potrebbe volere del tempo.
Qui ci viene in aiuto la modalità visuale: mentre siamo in command mode, basta premere il carattere

v

per attivarla, dopodichè possiamo usare i tasti movimento per selezionare le righe che ci interessano:

Una volta terminata la selezione, possiamo premere il carattere 'Y' per copiare le righe selezionate, o 'D' per tagliarle/cancellarle.

La modalità visuale è comoda anche per indentare blocchi di codice, attivandola per caratteri. In questo caso, la combinazione 'Ctrl+v'. In questo modo, possiamo selezionare i singoli caratteri, anche in colonna, ed aggiungere testo a tutte le righe selezionate entrando in insert mode con il tasto 'I'.

Ricerca testo corrente
Come sempre possiamo utilizzare il carattere '/' dal command mode per avviare una ricerca, inserire il testo che desideriamo cercare, premere invio, ed utilizzare i caratteri 'n' e 'N' per spostarci tra le varie occorrenze.
Ma se fossimo con il cursorse su una parola particolarmente lunga da cercare? Invece che riscriverla, basterebbe premere

Shift+*

per saltare immediatamente a tutte le altre occorrenze di quella parola nel nostro file. Ottimo per non dover riscrivere il tutto!

Configurazioni per-file
Gli utenti più avanzati, in genere, hanno già un file ~/.vimrc in cui si configurano le opzioni di default per il proprio editor (come l'attivazione della colorazione della sitassi, o la dimensione/comportamento del tab), ma potrebbe essere che dobbiamo lavorare spesso su un particolare file, e che per quel file specifico avremmo bisogno di configurazioni in parte -o totalmente- differenti dal nostro default. Invece di riattivare a mano tutte le configurazioni, è possibile inserire come prima o ultima riga del file le opzioni che ci interessano, inserendo prima il carattere '#' o '//' (così da apparire come commento per la maggior parte dei linguaggi di programmazione o scripting). Aggiungiamo ad esempio:

# vim: set number:ts=2

Stiamo dunque dicendo a Vim di visualizzare i numeri di riga ed impostare due caratteri per il tab solo per quel file specifico. Ricordiamoci però che:

  • Il tutto funziona se impostiamo ':set modeline' nel nostro .vimrc
  • Questa opzione non funziona nel momento in cui utilizziamo Vim con l'utente root

Una shell al volo
Se stiamo scrivendo uno script, o se abbiamo bisogno di verificare qualcosa sul nostro sistema, spesso abbiamo necessità di avere una shell. Più comunemente ne lanciamo una nuova (o un nuovo tab, se la nostra applicazione di terminale lo supporta), oppure salviamo ed usciamo per eseguire il nostro comando e ritornare al file.

Se non abbiamo intenzione di fare questa cosa, molti spesso lanciano i comandi direttamente da Vim, utilizzando la sequenza di caratteri:

:!<comando>

A volte, però, sarebbe meglio avere un'intera shell su cui lavorare: come fare? Semplicemente con il comando

:sh

Questo ci porta ad un prompt che potremo utilizzare quale fosse una normalissima shell. All'uscita di questa, ritorneremo al nostro buffer Vim, molto comodo.

Un'altra funzione molto utile è quella di poter appendere all'attuale file l'output di uno specifico comando. Ad esempio, se lanciamo questo comando:

:read !date

Verrà eseguito il comando 'date' e l'output dello stesso sarà inserito nel nostro file, pronto per essere editato.

Conclusioni
Si potrebbero scrivere libri su Vim, e qualcuno lo ha fatto, queste sono solo alcune piccole cose che, soprattutto se utilizzate diverse volte durante il giorno, rendono l'uso dell'editor più veloce ed agile.

E voi? Condividete nei commenti i vostri consigli, siamo curiosi di leggerli!

  • Alessandro Pischedda

    Bel post, complimenti 🙂

  • Lorenz

    mi associo. Anche se, VI... non so, ammetto che non mi è stato mai troppo simpatico. Limite mio confesso, ma quando ho bisogno di fare un cambio veloce di testo il mio editor è nano