Introduzione all'editor Vi
Vi ed Emacs sono gli strumenti piu' adatti per scrivere produttivamente
dei programmi (in particolare programmi C sotto Unix). Vi é disponibile come
Shareware in una versione per Dos con
manuale (in Inglese) anch' esso
disponibile. Se volete provare ad aprire una finestra DOS ed editare un testo mentre state
leggendo questa guida potete farlo con il comando DOS VI <nome-file>
Come muoversi in Vi
In Vi il movimento sullo schermo si ottiene sia con i sistemi tradizionali sia con comandi di movimento che vengono poi usati in tutti i comandi del Vi per ottenere sequenze complesse.
Movimenti elementari
- Solito tastierino delle freccette, PgUp, PgDn
- Mouse
- ^F ^B (leggi Ctrl-F Ctrl-B)
Comandi di movimento
- movimento di un carattere j (giu) k (su) l (dx) h (sin).
- nG Vai alla linea n (fare :set nu per visualizzare anche i numeri di linea)
- /<stringa> vai alla prima occorrenza di <stringa>
- n vai alla prossima occorenza
- ?<stringa> vai alla precedente occorenza di <stringa>
- N vai ad una occorenza invertendo il senso impostato
- % posizionati su una parentesi e con % vai a quella che la chiude e/o apre
- $ vai alla fine della linea
- <enter> vai al primo carattere della prossima linea
- w vai all' inizio della prossima parola
Come cancellare (e mettere nel buffer)
Quanto viene cancellato con i comandi sotto descritti non viene subito perso.
Quanto cancellato viene messo in una area protetta detta "buffer".
Ogni cancellazione, pero', sovrascrive il bufffer. Sono poi disponibili buffer ''con nome''
- d piu' uno dei precedenti comandi di movimento
cancella dalla posizione attuale del cursore fino alla posizione raggiunta
con il comando di movimento (ad es d$ cancella dalla posizione del cursore fino alla fine della linea, dw cancella una parola).
- dd cancella una linea
- x cancella un carattere
- J unisce due linee (e non cancella nulla)
Copiare porzioni di testo in un buffer
I seguenti comandi sovrascrivono il buffer senza pero' cancellare il testo.
- y piu' uno dei precedenti comandi di movimento
cattura nel buffer il testo
dalla posizione attuale del cursore fino alla posizione raggiunta con il comando di movimento
(ad es. yw cattura una parola)
- Y cattura la linea corrente nel buffer
- Nomi Buffer
Si possono mettere davanti ai comandi di cancellazione e/o di cattura i comandi "a "b etc. per
avere piu buffer con un nome in cui dirigere i testi catturati.
(ad esempio: "aY cattura la linea corrente nel buffer a). Sia "a che "A scrivono nel medesimo buffer, "a sovrascrive il contenuto precedente del buffer, "A invece aggiunge, quanto catturato, in coda al contenuto preesistente nel buffer.
Scrivere il contenuto del buffer
Una volta catturate delle porzioni di testo in un buffer queste possono venire
incollate altrove nel file in questione o anche in altri files.
- p
inserisce il contenuto del buffer dopo il cursore
- P
inserisce il contenuto del buffer prima del cursore
- "ap
inserisce il contenuto del buffer a dopo il cursore
Correggere, cambiare, sostituire
- c + comando di movimento + scrittura nuovo testo + ESC
sostituisce (con il nuovo testo battuto) il testo
dalla posizione attuale del cursore fino alla posizione raggiunta con il comando di movimento. Particolarmente significativi sono cw (cambia una parola) c% (cambia quanto si trova tra parentesi bilanciate) e c$ (cambia il testo dal cursore fino alla fine della linea).
- r permette di correggere il carattere su cui si trova il cursore
- R + scrittura nuovo testo + ESC
permette di scrivere sopra il testo gia' presente
Come inserire nuovo testo
I seguenti comandi reppresentano il punto debole di Vi infatti per inserire
un carattere in
Vi bisogna schiacciare tre tasti. I comando sono i seguenti:
- a + scrittura nuovo testo + ESC
permette di inserire il nuovo testo dopo il cursore
- i + scrittura nuovo testo + ESC
permette di inserire il nuovo testo prima del cursore. il tasto Insert ha lo stesso effetto di una i.
- o + scrittura nuovo testo + ESC
permette di inserire il nuovo testo aprendo una linea vuota sotto il cursore
- O + scrittura nuovo testo + ESC
permette di inserire il nuovo testo aprendo una linea vuota sopra il cursore
- :set ai per mantenere l'indentazione durante l'inserzione di testo
- :set noai per non mantenere l'indentazione durante l'inserzione di testo
Ripetizione e Undo
Vi e' stato forse il primo editor ad incorporare la possibilita' di disfare quanto fatto.
Schiacciando u (undo), infatti, si elimina l' ultimo cambiamento mentre il comando ''.'' i.e. do(i)t ripete l' ultimo comando. Un classico utilizzo di questi comandi e' rappresentato dalla
sequenza ''Pu.u.u.'' che fa apparire in successione le ultime linee cancellate. Si noti poi che tutti i comandi Vi possono avere un prefisso numerico (repeat count) che indica quante volte andra ripetuto il comando che segue. Cosi' se ad esempio x cancella un carattere 4x cancella 4 caratteri e 4dd cancella
quattro linee. Si noti che la sequenza ''xxxx.'' (l'ultimo e' un punto!!) cancella complessivamente cinque caratteri mentre ''4x.'' cancella otto caratteri.
Se durante la composizione di un comando, specie con repeat count, si ha il dubbio di aver fatto qualche errore si puo' annullare tutto
schiacciando ESC. Ad esempio se, volendo eseguire 2dd, ho il dubbio di aver schiacciato 22d, per non cancellare 20 linee di troppo, posso schiacciare ESC e reimpostare 2dd. Se comunque mi spariscono 20 linee di troppo, perche' ho digitato 22dd, posso farle ricomparire tutte e 22 con u.
Qualcosa sulla finestre (solo versione Dos)
Questo editor e' particolarmente adatto per lavorare con piu' files
contemporaneamente, integrandoli con dati che vengono dal sistema operativo.
i principali comandi per iniziare a fruire di queste capacita' sono i seguenti:
- :bu <file>
apre una nuova finestra per editare un file. Si puo' anche aprire una
finestra e non collegarla ad alcun file.
- g
passa alla prossima finestra
- :! <cmd>
esegui un comando dos
- !! <cmd>
esegui un comando dos e metti il suo output nella finestra
corrente
Gestione dei Files
Ovvero come entrare ed uscire dall'editor salvando o meno i cambiamenti
che si sono fatti. Come editare contemporaneamente piu' files.
I principali comandi utili a questo scopo sono i seguenti:
- VI <file1> <file2> .... <file-n>
Apre una sessione di editing per n files mostrandone due per volta, ciascuno in un una finestra separata.
La finestra dove si trova il cursore e' quella che di seguito indicheremo come finestra corrente. Il comado bu permette di aprire una nuova finestra che occupera' il 50% della finestra corrente. Una finestra si chiude, salvandone il contenuto nel file associato con il comando ZZ.
Con il comando :n si carica nella finestra corrente il prossimo file da editare nella lista <file1> <file2> .... <file-n>
- :q!
esci senza salvare alcun file (si perde tutto quello che non si e' gia' salvato!!!)
- :w <file>
salva il contenuto della finestra nel file <file>
- :w!
salva il contenuto della finestra nel file associato alla finestra
Appunti a cura di morando@disi.unige.it