Sistemi Operativi - Vi 1
Il sistema operativo LINUX L’editor vi
Giorgio Di Natale <[email protected]>Stefano Di Carlo <[email protected]>
Politecnico di TorinoDip. Automatica e Informatica
Sistemi Operativi - Vi 2
Riferimenti
• www.vim.org• Download: http://www.vim.org/download.php
• Documentation: http://www.vim.org/docs.php• PDF Text book: VimBook-OPL (Steve Qualline)
• vi –help• On-line help: comando :h
Sistemi Operativi - Vi 3
Caratteristiche dell'editor vi
• Si trova su tutti gli UNIX e funziona con qualunque terminale
• Due modi base di funzionamento:– modo comandi– modo inserimento
Exit
Comandi
Inserimento
i
ESC:q
Sistemi Operativi - Vi 4
Vi Improved (Vim)
• Versione di Vi con funzionalita` aggiuntive• Tre modi base di funzionamento:
– modo comandi– modo inserimento– modo visuale
Exit
Comandi
Inserimento
i
ESC
:q
Visuale
ESC
v
Sistemi Operativi - Vi 5
Esecuzione di vi
– vi fileedita il file (lo crea se non esiste)
– vi file +rigaapre il file alla riga specificata
Sistemi Operativi - Vi 6
Movimento del cursore
k
j
h l
Sistemi Operativi - Vi 7
Inserimento di testo
i testo nella posizione del cursore
I testo a inizio riga
a testo dopo il cursore
A testo a fine riga
O testo in una nuova linea sopra l’attuale
o testo in una nuova linea sotto l’attuale
Sistemi Operativi - Vi 8
I/O verso file
:w [file] salva il file:e file edita il file indicato
:x :wq salva il file e termina:q termina:q! termina senza salvare
Sistemi Operativi - Vi 9
Movimento del cursore
– tasti cursore, oppure h j k l– w alla prossima parola– 0 all'inizio della riga – $ alla fine della riga– CTRL-f avanti di una schermata– CTRL-b indietro di una schermata– 1G all'inizio del file– G alla fine del file– nG alla riga n
Sistemi Operativi - Vi 10
Comandi vi
• Cancellazione:– [n] x cancella i prossimi n caratteri– [n] X cancella i precedenti n caratteri – [n] dw cancella le prossime n parole– [n] dd cancella n linee– D cancella fino alla fine della linea
• Problemi?– u annulla l'ultima modifica – U annulla tutte le modifiche alla linea corrente– CTRL-l ridisegna lo schermo
Sistemi Operativi - Vi 11
Modifiche al testo
– J unisce due linee
– r char sostituisce char al carattere corrente
– ~ converte il carattere corrente da maiuscolo a minuscolo e viceversa
– . ripete l'ultima modifica
Sistemi Operativi - Vi 12
Cut, Copy e Paste
– per spostare o copiare parte del testo, occorre metterlo in un buffer
– quindi lo si può inserire con i comandi:• P inserisce prima del cursore
• p inserisce dopo il cursore
– [n] yy ricopia in un buffer n righe
Sistemi Operativi - Vi 13
Azioni speciali
– :!comando esegue comando in UNIX– :r !comando esegue il comando ed
inserisce il suo output nel file (es. :r !ls)– CTRL-vspecial-char inserisce il
codice Ascii di un carattere speciale, come Ctrl-H, Ctrl-L , Ctrl-M o ESC
– :map key comandi-viassegna alla chiave la sequenza di comandi indicata (es. :map ^W :w^M )
Sistemi Operativi - Vi 14
Uso avanzato di vi
– vi file1 file2 ...per editare una serie di file in sequenza
– quando si finisce con ciascun file:•:w per salvare il file•:n per passare al prossimo file (:n! per non
salvare quello attuale)•:e file per editare un nuovo file (:e! per non
salvare quello attuale)
Sistemi Operativi - Vi 15
Cut & Paste
– occorre servirsi, implicitamente o esplicitamente di uno dei seguenti buffer:
• buffer denominato (nome di una lettera a-z)
• buffer numerato [1-9]
• DTB, Deleted Text Buffer (default)
– un comando di cut ha la forma:" bufname azione
– bufname specifica il nome del buffer
– azione è yy o dd
Sistemi Operativi - Vi 16
Esempi
– "a5ddsposta 5 linee nel buffer a
– "byGcopia dalla posizione corrente alla fine del file nel buffer b
– "apestrae il contenuto del buffer a inserendolo nella riga dopo il cursore
– "bPestrae il contenuto del buffer b inserendolo nella riga prima del cursore
Sistemi Operativi - Vi 17
Sostituzioni– combinando opportunamente gli operatori s e g si
ottengono sostituzioni locali e globali– :s/marzo/aprile/
sostituisce nella linea corrente la prima occorrenza di marzo con aprile
– :s/marzo/aprile/gsostituisce nella linea corrente tutte le occorrenze di marzo con aprile
– :g/inverno/s//estate/gsostituisce ovunque inverno con estate
– :g/prova/s//ultima \&/gsostituisce ovunque prova con ultima prova
Sistemi Operativi - Vi 18
Ricerche in vi
– /pattern ricerca una stringa corrispondente al pattern in avanti
– ?pattern ricerca all'indietro– n cerca la prossima occorrenza– N cerca l’occorrenza precedente– il pattern può essere una normale stringa oppure
una espressione regolare ossia avere caratteri con significato speciale
Sistemi Operativi - Vi 19
Espressioni regolari in vi
– . un carattere qualunque– ^ inizio riga– $ fine riga– * ripetizione (zero o più volte)– + ripetizione (una o più volte)– [ ] un carattere tra quelli in parentesi– [^ ] un carattere esclusi quelli in parentesi– [x-y] un carattere nel range specificato– \< inizio parola– \> fine parola
Sistemi Operativi - Vi 20
Ricerche in vi
• Esempi:– /estate ricerca la parola estate – /\<[A-Z] ricerca una qualunque parola che comincia
con una lettera maiuscola– /^estate ricerca la parola estate ad inizio riga– /are\> ricerca tutte le parole con il suffisso are– ?##* ricerca indietro una ripetizione di uno o più
simboli #
Sistemi Operativi - Vi 21
vi - aiuti alla programmazione
– % posiziona il cursore sulla parentesi che bilancia quella su cui è il cursore
– >> indenta di una posizione la riga corrente– << de-indenta di una posizione la riga
corrente– Ctrl-D elimina un'indentazione
automatica durante l'inserimento di testo
Sistemi Operativi - Vi 22
Configurazione di vi
• I comandi di configurazione possono essere dati come interattivamente (ossia dopo :) oppure salvati nel direttorio di login nel file .exrc per essere eseguiti automaticamente all’attivazione di vi– set autoindentset aiset noai
– set shiftwidth=n– set ignorecaseset icset noic