L’editor Vi

Vim, o Vi IMproved, è un editor di testo open source multipiattaforma e, come il nome stesso suggerisce, è una versione migliorata dell’editor Vi.
In questo nostro articolo ci concentreremo sui principali comandi di Vi e sulle sue caratteristiche.
Cominciamo subito col dire che Vi è un editor modale, chiamato così perchè ha due modalità operative:

  • La modalità di inserimento, che permette di inserire testo.
  • La modalità di comando, che permette di inserire comandi per eseguire operazioni di editing, come spostarsi all’interno del file o modificare testo.

Adesso siamo pronti per scrivere il nostro primo file. Apriamo la shell e digitiamo il seguente comando:

vi file_di_prova

Vi starete già chiedendo come passare tra le due modalità. Appena dato il comando

vi file_di_prova

saremo nella modalità comando, quindi per poter iniziare a scrivere codice dobbiamo premere il tasto “i”. Per ritornare alla modalità comando dovremo premere “Esc”.

Iniziamo a scrivere il nostro “Hello World!” come in ogni lezione di informatica che si rispetti!

#!/bin/bash
echo “Hello World!”

NOTA: se sbagliamo a scrivere, per correggere entriamo nella modalità di comando premendo “Esc”, spostiamo il cursore sulla lettera da correggere usando le freccette della tastiera e premiamo x.
Ora dobbiamo salvare. Per farlo dobbiamo passare alla modalità di comando quindi premiamo il tasto “Esc”.

Negli esempi di seguito, una volta digitato il comando dobbiamo premere sempre “Invio” perchè sia eseguito.
Digitiamo:

:w

A questo punto il nostro file verrà salvato.
Usciamo da Vi con:

:q

I comandi possono essere anche combinati, infatti potevamo scrivere direttamente

:wq

per salvare ed uscire con un comando unico. Se avessimo voluto uscire da Vi senza salvare avremmo dovuto utilizzare il comando

:q!

Se avete seguito alla lettera, nella vostra home dovreste avere il file “file_di_prova”. Adesso dobbiamo modificarne i permessi.
Sempre dalla shell digitiamo:

chmod 700 file_di_prova

Adesso lo eseguiamo con:

./file_di_prova

La shell dovrebbe restituirvi la frase “Hello World!”

Continuiamo con una carrellata di comandi che potrebbero esserci utili.

Ricerca nel testo

Per cercare la prima occorrenza in avanti di una parola dobbiamo scrivere

/parola

mentre per la prima occorrenza all’indietro

?parola

Se si vuole proseguire nella ricerca cercando una successiva occorrenza della parola appena trovata, dobbiamo usare il comando ; (punto e virgola).
Per la ricerca a ritroso bisogna invece utilizzare il comando , (virgola).

Modifica del testo

Per cancellare la riga n dobbiamo digitare il comando:

:n d

Se invece vogliamo cancellare un blocco di codice dalla riga n alla riga m dobbiamo digitare il comando:

:n,m d

In Vi possiamo usare il . (punto) all’interno di un comando per riferirci alla riga corrente. Per esempio se volessimo spostare nella riga 10 le righe di codice dalla 1 a quella corrente (cioè dove abbiamo il cursore) dovremmo scrivere:

:1,. m 10

Se volessimo cancellare la riga corrente più le n righe successive:

:.,.+n d

Allo stesso modo il $ si riferisce all’ultima riga del file. Quindi se volessimo cancellare le righe dalla n fino alla fine dovremmo digitare:

:n,$ d

Continuiamo ancora con altri comandi utili. Vediamo come cambiare la prima occorrenza di una parola nella riga corrente (cioè il cursore è nella riga dove vogliamo apportare la modifica):

:s /parola_vecchia/parola_nuova/c

Se non vogliamo spostare il cursore possiamo indicare il numero di riga (n) in questo modo:

:n s /parola_vecchia/parola_nuova/c

infine per rimpiazzare tutte le occorrenze in una determinata riga scriviamo:

:n s /parola_vecchia/parola_nuova/g

E’ possibile quindi anche modificare tutte le occorrenze di una parola nella riga corrente:

:s /parola_vecchia/parola_nuova/g

cioè sostituiamo la g alla c.

Copia/Incolla

Potrebbe esser utile anche copiare un blocco di codice compreso tra le righe n e m, farlo è semplicissimo:

:n,m y

Il comando

:pu

incollerà poi le linee copiate dopo la linea corrente. Se vogliamo incollare dopo una linea specifica (n) il comando sarà questo:

:n pu

Utilità

Vi permette di visualizzare i numeri riga con questo comando:

:set number

Per spostarci all’n-esima riga digitiamo:

:n

Possiamo anche annullare l’ultimo comando dato premendo u (Undo).

Questa guida sicuramente non coprirà tutte le funzionalità di Vi. Chi volesse saperne di più può digitare il comando per la guida online:

:help

Se si desiderano invece informazioni per un comando specifico basterà digitare

:help nome_comando