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:

:!

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!

Utente Linux/Unix da più di 20 anni, cerco sempre di condividere il mio know-how; occasionalmente, litigo con lo sviluppatore di Postfix e risolvo piccoli bug in GNOME. Adoro tutto ciò che può essere automatizzato e reso dinamico, l’HA e l’universo container. Autore dal 2011, provo a condividere quei piccoli tips&tricks che migliorano il lavoro e la giornata.

5 risposte a “Velocizzare l’uso di Vim”

  1. Avatar Alessandro Pischedda
    Alessandro Pischedda

    Bel post, complimenti 🙂

  2. Avatar Lorenz
    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

  3. Avatar Eudora
    Eudora

    Programma sicuramente potentissimo, ma l’ho sempre trovato troppo macchinoso.
    Sarà anche per neofiti, ma alla fine con Nano si fa quasi tutto 🙂

  4. Avatar Aster
    Aster

    Concordò idem

  5. Avatar Otto
    Otto

    Adoro vim, per esempio è possibile editare una directory e muoversi nell’alberatura fino al file che si vuole editare, è possibile editare (e salvare!) in file all’interno di in tarball, evitando così di estrarre il file, editare e ricreare il tar.
    Il visual mode che hai fatto vedere è spaziale, se invece di “v” minuscola si usa “V” maiuscola si seleziona per linea, e si può applicare un commando al set di righe selezionato, per esempio “:s/pippo/topolino/g” oppure un semplice yank “y” per copiare le linee nel default buffer, oppure “>” per indentare a destra tutte le linee. “CTRL+v” invece consente di selezionare un box.
    Oltre a “*” che hai mostrato c’è “#” per andare nella direzione opposta, oppure “[I” (aperta parentesi quadra e poi i maiuscola) mostra tutte le linee che contengono quella parola
    CTRL+p completa la parola sulla base dei match che trova nelle righe precedenti
    CTRL+x e poi CTRL+f completa con il nome del file esistente sul filesystem, per esempio /var/log/mess lo completerà probabilmente con /var/log/messages
    In command mode, ma anche in search mode si può sempre richiamare il commando precedente con il tasto “freccia su”, si possono anche fare le reverse search come in bash, se non erro (CTRL+r)
    Utilissime le macro.
    Mi fermo qui, ma c’è tanta altra roba 🙂

Lascia un commento

Il tuo indirizzo email non sarà pubblicato. I campi obbligatori sono contrassegnati *