4.2. VI: l'antenato

VI è stato il primo editor a tutto schermo esistente. Rappresenta una delle principali obiezioni mosse dai detrattori di Unix, ma anche uno dei principali argomenti dei suoi difensori: sebbene sia complicato da imparare, è anche uno strumento estremamente potente una volta che ci si abitua a usarlo. Con poche pressioni dei tasti un utente di VI può spostare le montagne e, a parte Emacs, di pochi editor di testo può essere detta la stessa cosa.

La versione fornita con Linux-Mandrake è in realtà VIm, che sta per VI iMproved, ma in questo capitolo lo chiameremo comunque VI.

4.2.1. Modalità inserimento, modalità comandi, modalità ex...

Prima di tutto, come avviarlo: esattamente come Emacs. Quindi riprendiamo i nostri due file e digitiamo:

$ vi file1 file2

A questo punto vi troverete di fronte a una finestra simile a Figura 4-4.

Figura 4-4. Situazione iniziale in VIm

Vi trovate ora di fronte al primo file aperto, in modalità comandi. In modalità comandi non potete inserire testo in un file... Per farlo, dovete andare in modalità inserimento, e perciò dovete digitare uno dei comandi che vi permettono di fare questo passaggio:

In modalità inserimento vedrete comparire in fondo allo schermo la scritta --INSERT-- (affinché possiate sapere in che modalità vi trovate); potete inserire testo solo e unicamente in questa modalità. Per tornare in modalità comandi premete il tasto Esc.

In modalità inserimento potete usare i tasti Backspace e Canc per cancellare il testo durante la digitazione. Per spostarvi all'interno del testo, sia in modalità comandi che in modalità inserimento, potete usare i tasti cursore. In modalità comandi sono disponibili anche altre combinazioni di tasti di cui ci occuperemo in seguito.

Alla modalità ex si accede premendo il tasto : in modalità comandi: lo stesso carattere : comparirà in fondo allo schermo, e il cursore sarà posizionato su di esso; tutto ciò che scriverete in seguito, fino alla pressione di Invio, sarà considerato da VI come un comando ex. Se cancellate il comando e il : sarete riportati in modalità comandi, e il cursore tornerà nella sua posizione originale.

Per salvare i cambiamenti effettuati in un file digitate :w in modalità comandi. Se volete salvare il contenuto del buffer in un file differente scrivete :w <nome_file>.

4.2.2. La gestione dei buffer

Come in Emacs, potete avere diversi buffer visualizzati sullo schermo; per ottenere questo risultato usate il comando :split.

Per spostarvi da un file all'altro, quando siete in un buffer, scrivete :next per andare al file successivo e :prev per andare al precedente. Potete anche usare il comando :e <nome_file>, che vi permette di spostarvi sul file desiderato se esso è stato già aperto o di aprire un nuovo file; anche in questo caso è disponibile il completamento automatico.

Per cambiare buffer digitate C-w j, per andare al buffer inferiore, o C-w k per andare a quello superiore; potete anche usare i tasti cursore su e giù invece di j e k. Il comando :close nasconde un buffer, mentre il comando :q lo chiude.

Fate attenzione, VI è pignolo: se provate a nascondere o chiudere un buffer senza aver salvato i cambiamenti, il comando non sarà eseguito e comparirà questo messaggio:

No write since last change (use! to override)

In questo caso fate come vi viene detto e digitate :q! o :close!.

4.2.3. Elaborazione del testo e comandi di movimento

Oltre ai tasti Backspace e Canc in modalità inserimento, VI ha molti altri comandi per cancellare, copiare, incollare e sostituire testo -- in modalità comandi. In questa sede ci occuperemo di alcuni di essi. Tutti i comandi mostrati qui sono in realtà divisi in due parti: l'azione da compiere e l'area interessata. L'azione può essere:

L'area interessata indica su quali gruppi di caratteri deve agire il comando. Questi stessi comandi di area interessata immessi da soli, così come sono, in modalità comandi corrispondono a movimenti:

Ciascuno di questi caratteri di area interessata o comandi di movimento può essere preceduto da un numero di ripetizioni; nel caso di G, invece, esso indica un numero di riga all'interno del file. Partendo da queste basi, potete ottenere tutte le possibili combinazioni. Alcuni esempi:

È vero che questi comandi non sono molto intuitivi, ma come sempre il miglior metodo è fare pratica. Comunque potete vedere che l'espressione "spostare le montagne con pochi tasti" non era poi così esagerata :-)

4.2.4. Taglia, copia, incolla

VI possiede un comando per copiare testo che abbiamo già incontrato: il comando y. Per tagliare il testo è sufficiente usare il comando d. Avete a disposizione 27 memorie per memorizzare il testo: una memoria anonima e 26 memorie denominate come le 26 lettere minuscole dell'alfabeto inglese.

Per usare la memoria anonima dovete digitare il comando semplice. Perciò il comando y12w copia nella memoria anonima le 12 parole che si trovano dopo il cursore[2]. Usate invece d12w se volete tagliare lo stesso blocco di testo.

Per utilizzare una delle 26 memorie associate alle lettere dell'alfabeto, digitate la sequenza "<x> prima del comando, dove <x> rappresenta il nome della memoria. Perciò dovreste scrivere "ky12w per copiare le stesse 12 parole nella memoria k, e "kd12w per tagliarle.

Per incollare il contenuto della memoria anonima dovete usare i comandi p o P (per Paste), per inserire il testo rispettivamente dopo o prima del cursore. Per incollare il contenuto di una memoria con un nome usate "<x>p o "<x>P nello stesso modo (ad esempio, "dp inserirà il contenuto della memoria d dopo il cursore).

Diamo un'occhiata all'esempio di Figura 4-5.

Figura 4-5. VIm, prima di copiare il blocco di testo

Per compiere questa operazione seguiremo questi passi:

Otteniamo così il risultato che ci aspettavamo, come mostrato in Figura 4-6.

Figura 4-6. VIm, dopo la copia del blocco di testo

Cercare del testo è molto semplice: in modalità comandi è sufficiente digitare / seguito dalla stringa che deve essere cercata, e quindi premere il tasto Invio. Per esempio, con /party faremo una ricerca della stringa party a partire dalla posizione attuale del cursore. Premendo n venite portati all'occorrenza successiva, e se siete arrivati alla fine del file la ricerca ripartirà dall'inizio. Per cercare all'indietro usate ? invece di /.

4.2.5. Uscire da VI

Il comando per uscire è :q (in realtà questo comando chiude il buffer attuale, come abbiamo già visto, ma se questo è l'unico buffer esistente uscirete da VI). Esiste una scorciatoia: nella maggior parte dei casi voi modificherete un solo file per volta. Quindi per uscire potrete usare:

Avrete già notato che, se avete diversi buffer aperti, :wq salverà il buffer attivo per poi chiuderlo.

Note

[1]

Una scorciatoia per dl (cancella un carattere in avanti) è x; una scorciatoia per dh è X; dd cancella la riga attuale.

[2]

...sempre se il cursore si trova all'inizio della prima parola!

[3]

y6w significa letteralmente: "Yank 6 words".


Tux on Star from MandrakeSoft Linux è un trademark registrato di Linus Torvalds. Tutti gli altri copyright e trademark appartengono ai rispettivi proprietari.
A meno che non sia specificato diversamente, tutto il contenuto di queste pagine e tutte le immagini sono Copyright MandrakeSoft S.A. e MandrakeSoft Inc. 2000.
http://www.linux-mandrake.com/