A chi fa questo mestiere prima o poi capita di doversi collegare con un server su cui non si ha a disposizione un’interfaccia grafica (o semplicemente non la si può usare), magari per correggere al volo un bug grave su un sito pubblicato, e non sempre si può usare WinSCP o copiarsi i file via ssh utilizzando FileZilla e poi ricopiarli sul server, anche perché si rischia di incasinare i permessi dei file e di creare problemi ben più gravi.
Nei sistemi Unix-like – oggigiorno Linux e OSX se non si è dei sistemisti esperti o non si lavora in ambienti strani – a volte è disponibile nano, che tutto sommato è “abbastanza user-friendly” ma potrebbe non essere stato installato e potremmo non avere i permessi per poterlo installare.
Un’alternativa che c’è sempre o quasi è il VI(M), un po’ ostile e apparentemente scarsissimo di funzionalità, ma adorato da molti guru e forse a ragione.
Quasi sempre è già installato VIM (VI iMproved), ed eseguendo il comando vi nomefile
viene aperto proprio il vim, ma i due si somigliano e la maggior parte dei comandi sono uguali.
Nei giorni scorsi in azienda hanno proposto agli interessati un corso interno per migliorare le nostre competenze in ambiente Linux, e uno degli argomenti era proprio vim, quindi mi segno qui i comandi che mi sono sembrati più utili.
Breve prontuario per novizi
Di comandi ce ne sono una marea, e se siete uno sviluppatore che intende usarlo nel lavoro di tutti i giorni forse vi conviene studiarveli per sfruttare appieno la sua potenza. Per le persone normali invece dovrebbe bastare questo piccolo vademecum, anche perché la stessa cosa si può fare combinando vari comandi, quindi non serve saperli tutti (al massimo si va più lenti).
Parametri di avvio
-v
: modalità vi (senza funzionalità aggiuntive di vim)
-d
: modalità differenze (vi -d file1 file2
)
-M
: modalità sola lettura, se avete paura (a ragione) di fare danni
Se si è presi dal panico
ESC
: esce dalla modalità attuale (molto utile premerlo a ripetizione se si è in stato di panico)
:q!
: esce senza salvare (altra sequenza molto importante se non si sa bene cosa si è fatto)
u
: undo (annulla)
ctrl+r
: redo (ri-esegue eventuali modifiche annullate)
Modalità
ESC
: esce dalla modalità attuale
i
: modalità inserimento
o
: aggiunge una riga dopo quella attuale e vi entra in modalità inserimento
r
: in inserimento, ma con sostituzione del carattere su cui si è
Movimento
h j k l
: sinistra, giù, su, destra (comodo se si vuole fare tutto con una mano, ma di solito anche le frecce funzionano)
0
: inizio della riga corrente
$
: fine della riga corrente (non a caso il dollaro viene usato per rappresentare i fine linea)
:num_riga
: si sposta sulla riga specificata
G
: si sposta sull’ultima riga
Funzioni di uscita e salvataggio
:q
: esce
:wq
: esce salvando
:q!
: esce senza salvare
:w
: salva
Funzioni di copia-taglia-incolla
y
: copia la riga corrente
d d
(doppia d veloce) : taglia la riga corrente
num_righe d d
: taglia il numero di righe specificate numero di righe seguite da doppio “d”
p
: incolla
Ricerca e sostituzione
/string
: ricerca la stringa “string” (con il tasto n
ci si può spostare sui successivi, con N
sui precedenti)
:%s/string1/string2/g
: sostituisce “string1” con “string2”
Comandi informativi
:set list
: visualizza tabulazioni e caratteri di fine linea (:set nolist
per annullare la visualizzazione)
:f
: visualizza nome del file e posizione all’interno del file (numero di riga, di colonna e percentuale)
Conclusioni
Essendo vim un editor tutto basato su comandi da tastiera richiede una buona memoria e molta pratica per essere utilizzato con un’adeguata velocità, ma fortunatamente insieme al vim c’è sempre installato anche vimtutor, una “guida testuale interattiva” fatta per esercitarsi con i comandi più utili di vim.
Sarà brutto, sarà ostile, ma sviluppatori e sistemisti non possono non conoscere un po’ un editor sempre disponibile e tutto sommato potente come vi(m), quindi è imperativo imparare almeno una decina dei comandi più utili e provare a usarli quando se ne ha l’occasione… se non altro nella selva di editor e ide che nascono e muoiono alla velocità della luce questo sta in piedi da quasi quarant’anni e non sente nemmeno il peso della vecchiaia.