PREV
Capitolo 14 - Archiviare i File
NEXT
Capitolo 16 - Gestione Dei Pacchetti Slackware

Torna all'indice

Capitolo 15. L'Editor vi

vi(1) è l'editor di testo standard di Unix, e padroneggiarlo è essenziale per gli amministratori di sistema. Sono disponibili molte versioni (o cloni) di vi, incluso vi, elvis, vile, e vim. Almeno uno di questi è incluso in praticamente ogni versione di Unix, così come su Linux. Tutte queste versioni comprendono gli stessi comandi e caratteristiche di base, così imparare con un clone dovrebbe poi facilitare l'apprendimento con un altro.
vi include un grosso numero di potenti strumenti fra cui l'evidenziazione della sintassi, la formattazione del codice, un efficiente meccanismo di ricerca-e-sostituzione, macro, e molto altro ancora. Queste caratteristiche ne fanno uno strumento appetito da programmatori, sviluppatori web, e simili. Gli amministratori di sistema ne apprezzeranno gli automatismi e la possibile integrazione con la shell.

Su Slackware Linux, la versione di default di vi disponibile è elvis. Altre versioni - inclusi vim e gvim - saranno disponibili una volta installati gli appositi pacchetti.

gvim è una versione per X Window di vim che include toolbar, menu a tendina, e finestre di dialogo.

top
Torna all'indice

Iniziare con vi

vi può essere lanciato dalla linea di comando in molti modi. La via più semplice è:

$ vi


Figura 15-1. Una sessione di vi.



vi con un buffer vuoto. A questo punto, dovresti vedere una schermata in gran parte vuota. Ci troviamo ora in “modalità di comando”, aspettando che tu faccia qualcosa. Per una discussione sulle varie modalità di vi, vai alla sezione Modalità. Per uscire da vi, digita: ":q".
Se non ci sarà stata alcuna modifica ai file, questo farà si che vi si chiuda. Se sono invece state fatte delle modifiche, sarai avvertito e ti sarà chiesto se ignorarle o meno. Puoi anche lanciare vi con un file preesistente. Per esempio, il file /etc/resolv.conf potrebbe essere aperto in questa maniera:

$ vi /etc/resolv.conf


Infine, vi può essere lanciato in modo da cominciare da una certa linea di un file. Ad esempio, puoi eseguire vi sulla linea 47 di /usr/src/linux/init/main.c così:

vi +47 /usr/src/linux/init/main.c


vi mostrerà il file indicato e posizionerà il cursore sulla linea specificata. Nel caso che tu specificassi una linea che va oltre la fine del file, vi piazzerà il cursore sull'ultima linea. Questo è in particolar modo d'aiuto ai programmatori, poichè possono saltar dritto alla posizione del file nella quale è stato segnalato un errore, senza dover cercare la riga manualmente.

top
Torna all'indice

Modalità

vi opera in varie modalità, che sono utilizzate per compiere diversi compiti. Non appena viene lanciato vi, ti trovi in modalità di comando. A questo punto, puoi impartire vari comandi per manipolare il testo, muoverti attraverso il file, salvare, uscire, ed altro. La modifica del testo è fatta in modalità di inserimento. Potrai velocemente muoverti fra le modalità con alcuni tasti rapidi, che saranno mostrati successivamente.

Modalità di Comando

Inizialmente ti ritroverai in modalità di comando. Da questa modalità, non puoi direttamente aggiungere del testo o modificare quello che già c'è. Comunque, puoi manipolare il testo, cercare, uscire, salvare, caricare nuovi files, ed altro. Questa è intesa solo come una introduzione alla modalità di comando. Per una descrizione dei vari comandi, vai alla sezione Tasti di vi.

Probabilmente il comando più utilizzato in modalità di comando è quello per il passaggio alla modalità di inserimento. Questo si fa premendo il tasto "i". Il cursore cambia forma, e -- INSERT -- viene mostrato in basso nella schermata (questo non avviene in tutti i cloni di vi). Da ora, tutto quello che batterai sulla tastiera andrà nel buffer corrente e verrà mostrato sullo schermo. Per tornare in modalità di comando, premi il tasto esc.
La modalità di comando è anche quello utilizzata per muoversi all'interno del file. In alcuni sistemi, puoi usare i tasti freccia per muoverti. Su altri sistemi, potresti dover usare i più tradizionali tasti “hjkl”. Ecco qui una semplice lista di come questi tasti sono utilizzati per muoversi:

h - muove a sinistra di un carattere
j - muove in basso di un carattere
k - muove in alto di un carattere
l - muove a destra di un carattere


Semplicemente, premi un bottone per muoverti. Come vedrai in seguito, questi tasti possono essere combinati con molti altri per muoversi molto più efficientemente.
Molti dei comandi che userai in modalità comando cominciano coi due punti. Per esempio, si esce con :q , come mostrato prima. I due punti semplicemente indicano che quello è un comando, mentre “q” indica a vi di uscire. Altri comandi sono costituiti da un numero (opzionale) seguito da una lettera. Questi comandi non hanno i due punti all'inizio, e sono generalmente usati per modificare il testo.

Ad esempio, per cancellare una linea da un file si usa dd. Questo cancellerà la riga su cui si trova il cursore. Lanciando il comando 4dd si dirà a vi di rimuovere la linea su cui si trova il cursore, ed anche le tre successive. In generale, il numero indica a vi quante volte eseguire quel comando.

Puoi combinare un numero con i tasti di movimento per muoverti di molti caratteri per volta. Ad esempio, 10k muoverà in alto sullo schermo il cursore di dieci linee.

La modalità di comando può anche essere usata per il copia e incolla, l'inserimento di testo, e per inserire altri file nel buffer corrente. La copia del testo è eseguita con il tasto y (y sta per yank - strattone, ndT). La copia dell'intera linea corrente è fatta digitando yy, e anche questo comando può essere anticipato da un numero per copiare più linee. Poi, muovi il cursore su una locazione e premi p. Il testo viene incollato sulla linea successiva a quella corrente. Si può tagliare il testo digitando dd, e p può essere usato per incollare di nuovo il testo nel file. Leggere del testo da un altro file è una procedura semplice. Digita soltanto :r, seguito da uno spazio e dal nome del file che contiene il testo da essere inserito. Il contenuto del file verrà incollato nel buffer corrente sulla linea dopo il cursore. I cloni di vi più sofisticati comprendono anche il completamento automatico del nome del file, similmente alla shell.

L'ultima caratteristica che verrà illustrata è la ricerca. La modalità di comando permette una semplice ricerca, così come più complicati comandi per trovare-e-sostituire che fanno uso di una potente versione delle espressioni regolari. Una completa discussione sulle espressioni regolare va oltre lo scopo di questo capitolo, così questa sezione illustrerà solamente semplici utilizzi per la ricerca.

Una semplice ricerca è compiuta digitando il tasto /, seguito dal testo che vuoi cercare. vi cercherà in avanti a partire dal cursore fino alla fine del fine, fermandosi quando trova una occorrenza. Nota che le occorrenze incomplete fermeranno vi alla stessa maniera. Per esempio, una ricerca di “the” farà sì che vi si fermi su “then”, “therefore”, e così via. Questo perchè tutte le parole soddisfano la stringa “the”, pur contenendola solo all'inizio.

Dopo che vi ha trovato la prima occorrenza, puoi passare alla successiva semplicemente premendo il tasto / seguito da invio. Puoi anche cercare all'indietro attraverso il file sostituendo lo slash con il tasto ?. Ad esempio, la ricerca all'indietro nel file di “the” sarabbe possibile col comando ?the.

Modalità di inserimento

L'nserimentro e la sostituzione del testo sono compiute in modalità inserimento. Come precendentemente spiegato, puoi passare alla modalità di inserimento premendo i dalla modalità comando. Poi tutto quello che tu digiterai finirà nel buffer corrente. Premendo il tasto escape ritornerai in modalità di comando.

La modifica del testo è possibile in molte maniere. Dalla modalità di comando, premendo r sarà possibile rimpiazzare il carattere su cui si trova il cursore. Semplicemente digita il nuovo carattere ed esso sostituirà quello sotto il cursore. Poi tornerai automaticamente nella modalità di comando. Premendo R potrai rimpiazza quanti caratteri vorrai. Per uscire da questa sorta di modalità di sostituzione, premi semplicemente il tasto esc per tornare in modalità di comando.

Esiste anche un'altra maniera per alternarsi fra inserimento e sostituzione. Premere il tasto insert dalla modalità di comando ti farà passare alla modalità di inserimento. Una volta nella modalità di inserimento, il tasto Insert servirà per alternarsi fra inserimento e sostituzione. Premerlo una volta ti permetterà di sostituire. Premerlo ancora ti permetterà di nuovo di inserire del testo.

top

Torna all'indice

Aprire dei file

vi ti permette di aprire dei files dalla modalità di comando, allo stesso modo in cui lo si fa specificando il file da aprire all'avvio dal prompt dei comandi. Per aprire il file /etc/lilo.conf :

:e /etc/lilo.conf


Se tu hai fatto delle modifiche al buffer corrente senza aver salvato, vi se ne accorgerà. Puoi ancora aprire il file senza salvare il buffer corrente digitando :e!, seguito da uno spazio e dal nome del file. In generale, gli avvertimenti di vi possono essere evitati eseguendo il comando seguito da un punto esclamativo.

Se vuoi riaprire il file corrente, puoi farlo semplicemente usando e!. Questo è utile se hai fatto qualcosa di indesiderato sul file e vuoi aprirlo daccapo.
Alcuni cloni di vi (ad esempio, vim) permettono di aprire buffer multipli allo stesso tempo. Ad esempio, per aprire il file 09-vi.sgml nella mia home directory mentre un altro file è aperto, non avrei da digitare che:

:split ~/09-vi.sgml


Il nuovo file è mostrato sulla metà superiore della schermata, e il vecchio file è mostrato nella metà inferiore. Ci sono molti comandi che manipolano le schermate suddivise, e molti di questi cominciano a ricordare qualcosa di EMACS.
Il miglior posto per leggere una lista di questi comandi è la pagina del manuale del tuo clone di vi. Nota che molti cloni non supportano le schermate suddivise, così potrebbero non essere disponibili.

top

Torna all'indice

Salvare dei file

Ci sono molti modi per salvare dei file con vi. Se vuoi salvare il buffer corrente sul file randomness, puoi farlo digitando:

:w randomness


Salvato il file una prima volta, salvarlo di nuovo è semplice come premere :w. Ogni modifica verrà scritta sul file. Dopo aver salvato il file, ritornerai alla modalità di comando. Se vuoi salvare il file e uscire da vi (un'operazione molto frequente), puoi digitare :wq. Questo dice a vi di salvare il file corrente e tornare alla shell.

In alcuni casi, potresti voler salvare su un file contrassegnato come di sola lettura. Per fare questo ti basterà aggiungere un punto esclamativo dopo il comando di scrittura, in questo modo:

:w!
:wq!


Comunque, potrebbero esserci delle occasioni in cui non potrai comunque scrivere sul file (ad esempio, se stai tentando di modificare un file che è di proprietà di un altro utente). Quando questo accade, vi ti dirà che non puoi salvare il file. Se vuoi davvero modificare il file, dovrai uscire ed editarlo ad esempio come root.

top
Torna all'indice

Uscire da vi

Una maniera per uscire da vi è attraverso il comando :wq,che salverà il buffer corrente prima di uscire. Puoi anche uscire senza salvare con :q oppure :q!. L'ultimo è da utilizzare quando hai modificato il buffer ma non bisogna scrivere alcuna modifica sul file.

In certi casi, il tuo computer o vi stesso potrebbero crashare. Comunque, sia elvis sia vim faranno in modo da minimizzare il danno su ogni buffer aperto. Entrambi gli editor salvano i buffer aperti su un file temporaneo quando potranno. Questi file hanno solitamente un nome simile al file originale aperto, ma con un punto all'inizio. Questo rende il file nascosto.

Questo file temporaneo viene rimosso una volta che l'editor viene chiuso in condizioni normali. Questo significa che i file temporanei saranno ancora in giro se qualcosa crasha. Quando tenterai di riaprire di nuovo il file, ti verrà chiesto che cosa fare. Nella maggior parte dei casi, gran parte del tuo lavoro non salvato potrà essere recuperata. elvis ti manderà anche una mail (dal Paradiso, abbastanza stranamente :) dicendoti che esiste una copia di backup.

top

Torna all'indice

Configurazione di vi

Il tuo clone preferito di vi può essere configurato in molti modi.

Una serie di comandi può essere impartita in modalità di comando per configurare vi come preferisci. A seconda del tuo editor, puoi abilitare alcune caratteristiche che faciliteranno la programmazione (come l'evidenziazione della sintassi, l'auto-indentazione, e altro), programmare delle macro per automatizzare certi compiti, abilitare sostituzioni testuali, eccetera.

Quasi tutti questi comandi possono essere messi in un file di configurazione nella tua home directory. elvis si aspetta un file di nome .exrc, mentre vim si aspetta il file .vimrc.
La maggior parte dei comandi di setup inseribili in modalità di comando possono essere messi nei file di configurazione. Questo include informazioni sul setup, sostituzioni testuali, macro ed altro.

Discutere tutte queste opzioni e le differenze fra gli editor è un compito abbastanza complicato. Per maggiori informazioni, controlla la pagina del manuale o il sito web del tuo editor vi. Alcuni editor (come vim) hanno una estesa documentazione all'interno dell'editor accessibile con il comando :help, o qualcosa di simile. Puoi anche controllare sul libro della O'Reilly Learning the vi Editor di Lamb e Robbins.

Molti programmi comuni su Linux apriranno un file di testo in vi per default. Ad esempio, modificare le crontabs (vedi la sezione su cron) lancerà vi di default. Se non ti piace vi e vorresti che fosse aperto un altro editor, quello che hai bisogno di fare è modificare la variabile di ambiente VISUAL con l'editor che preferisci. Per informazioni sulla configurazione delle variabili d'ambiente, vedi la sezione Variabili d'ambiente nel Capitolo 8. Se vuoi essere sicuro che il tuo editor sia quello di default ad ogni login, aggiungi il settaggio di VISUAL nel tuo file .bash_profile o .bashrc.

top

Torna all'indice

Tasti di vi

Questa sezione è un riferimento veloce sui più comuni comandi di vi. Alcuni di questi sono stati discussi precedentemente nel capitolo, mentre altri risulteranno nuovi.

Tabella 15-1. Movimenti

Operationi Tasti
sinistra, giù, su, destra h, j, k, l
Alla fine della linea $
All'inizio della linea ^
Alla fine del file G
All'inizio del file :1
Alla linea 47 :47

Tabella 15-2. Modifiche

Operationi Tasti
Rimuovere una linea dd
Rimuovere 5 linee 5dd
Rimpiazzare un carattere r
Rimuovere un carattere x
Rimuovere 10 caratteri 10x
Annulla l'ultima operazione u
Unisci la linea corrente con le successive J

Tabella 15-3. Ricerca

Operationi Tasti
Cerca “asdf” /asdf
Cerca all'indietro “asdf” ?asdf
Ripeti l'ultima ricerca in avanti /
Ripeti l'ultima ricerca all'indietro ?

Tabella 15-4. Salvare e uscire

Operationi Tasti
Uscita :q
Uscire senza salvare :q!
Salvare e uscire :wq
Salvare, senza uscire :w
Riaprire il file corrente :e!
Salvare il buffer sul file asdf :w asdf
Aprire il file hejaz :e hejaz
Copiare il file asdf nel buffer :r asdf
Copiare l'output di ls nel buffer :r !ls


top
Torna all'indice

Sommario

Ora dovresti avere un minimo di familiarietà con vi - l'editor di testo standard di Unix. vi è un programma abbastanza complesso con molti comandi e opzioni di configurazione. Comunque, dovresti già essere capace di aprire un file, muoverti all'interno di esso, modificarlo, e uscire. Questo è tutto quello che hai bisogno di sapere per la maggior parte delle operazioni quotidiane. Se avrai bisogno di maggiori potenzialità, potrai consultare l'esauriente documentazione di vi per imparare a usarle.

top
Torna all'indice

PREV
Capitolo 14 - Archiviare i File
NEXT
Capitolo 16 - Gestione Dei Pacchetti Slackware