5.8 Modifica del contenuto di un file
Esistono programmi, i text editor (editor di testo), che oltre a visualizzare il contenuto di
un file generico, permettono di modificarlo. I text editor più utilizzati sono vi o
vim (vi improved - che è la sua evoluzione) e emacs (man page vi(1) o vim(1) e
emacs(1)).
____________________________________________________________________
Comando: vim
Path: /usr/bin/vim
SINTASSI
$ vim [option] file
DESCRIZIONE
-
option specifica le opzioni di funzionamento di vim. Può assumere i seguenti valori:
-
+[num] indica a vim di posizionare il cursore sulla num-esima riga del
primo file specificato (se num non è specificato, il cursore viene
posizionato sull’ultima riga del file);
-
+/pattern indica a vim di posizionare il cursore sulla prima occorrenza di
pattern;
-
+command
indica a vim di eseguire il comando command (interpretato come
un comando Ex) dopo la lettura del primo file;
-
-c command
come +command;
-
-cmd command
come -c command, ma il comando viene eseguito prima di
considerare qualsiasi file vimrc;
-
-b apre i file in modalità binaria;
-
-C imposta la modalità compatibile a vi, anche se esiste il file
.vimrc;
-
-d imposta la modalità diff. Visualizza le differenze tra i file indicati
(v. vimdiff);
-
-e imposta la modalità Ex;
-
-f (per l’interfaccia grafica) non esegue il fork dalla shell da cui è
lanciato;
-
-F imposta la modalità di scrittura Farsi, da destra verso sinistra (se
è stato compilato con le opportune opzioni);
-
-g lancia l’interfaccia grafica (se è stato compilato con le opportune
opzioni);
-
-h | --help
visualizza un aiuto sommario di vim;
-
-H imposta la modalità di scrittura Hebrew (ebraico), da destra verso
sinistra (se è stato compilato con le opportune opzioni);
-
-i filename
indica di utilizzare il file filename al posto del file /.viminfo;
-
-L come -r;
-
-l imposta la modalità Lisp;
-
-m disabilita la modifica dei file (sola lettura);
-
-N disabilita la piena compatibilità con vi;
-
-n indica di non utilizzare nessun file di swap;
-
-o[n] indica di aprire n finestre;
-
-R imposta la modalità di sola lettura (il contenuto dei file
visualizzato può essere modificato, ma il salvataggio dello stesso
viene impedito, se non è esplicitamente indicato);
-
-r elenca tutti i file di swap con indicazioni per l’eventuale ripristino;
-
-r filename
indica di utilizzare il file filename per il ripristino di un file in
modifica durante un crash di vim;
-
-s imposta la modalità silenziosa (solo per la modalità Ex);
-
-s filename
il file filename viene letto ed interpretato come se i comandi in
esso contenuti fossero digitati dalla tastiera;
-
-T terminal
specifca il nome del terminale che si sta utilizzando;
-
-u filename
indica di leggere le informazioni di inizializzazione dal file
filename;
-
-U filename
indica di utilizzare i comandi contenuti nel file filename per
l’inizializzazione dell’interfaccia grafica;
-
-V indica di visualizzare più informazioni sui file;
-
-v imposta la modalità vi (se è lanciato con il coamndo ex);
-
-w filename
tutti i comandi impartiti sono memorizzati nel file filename (se il
file esiste i nuovi comandi vengono aggiunti);
-
-W filename
come -w ma se il file esiste viene prima cancellato;
-
-x i file vengono salvati in modo cifrato (viene richiesto l’inserimento
di una chiave per la cifratura);
-
-Z imposta delle restrizioni sul funzionamento di vim (come per i
comandi che iniziano con ‘r’);
-
-- indica esplicitamente la fine delle opzioni (utilizzato per
l’apertura di file che iniziano con ‘-’);
-
--version visuailzza la versione di vim;
-
--remote indica di collegarsi in remoto ad un server vim;
-
--serverlist
elenca i server vim che riesce a trovare;
-
--servername name
specifica il server vim da utilizzare;
-
--serversend keys
invia i comandi specificati da keys;
-
--socketid id
utilizza il meccanismo GtkPlug per lanciare gvim in un’altra
finestra (funziona solo con le librerie gtk);
-
--echo-wid
visualizza l’identificativo della finestra (Window ID) relativa
all’interfaccia grafica;
-
filespecifica il file da aprire. Può essere uno dei seguenti valori
-
filename
un nome di file;
-
filelist un elenco di file separati da uno spazio;
-
- il file da aprire viene letto dallo standard input, mentre i comandi
sono ricevuti dallo standard error che deve essere un terminale;
-
-t tag il file da aprire e la posizione iniziale del cursore dipende da tag, una
sorta di etichetta;
-
-q [errorfile]
imposta la modalità quickFix. Il file errorfile viene letto e visualizzato
il primo errore (se il file viene omesso, viene considerato il file
errors.vim);
Ulteriori informazioni possono essere ottenute direttamente da vim con il comando :help,
che ha la seguente sintassi
:help [subject]
dove subject indica l’argomento di cui si desiderano ulteriori informazioni. L’elenco dei
file relativi alla documentazione di vim può essere ottenuto con il comando
:help doc-file-list
____________________________________________________________________
L’editor vim ha caratteristiche diverse dipendentemente dal nome del comando utilizzato
per lanciarlo. Possono infatti essere utilizati i seguenti comandi
-
vim la modalità classica;
-
ex avvia in modalità Ex. È possibile ritornale alla modalità classica con il comando
:vi;
-
view apre i file in sola lettura;
-
gvim | gview
avvia l’interfaccia grafica di vim;
-
rvim | rview | rgvim | rgview
avvia l’interfaccia grafica di vim con alcune restrizioni;
Ad esempio, il comando
$ vi pippo
carica in memoria il file pippo e ne visualizza una parte sullo schermo, che può essere
scorsa con i tasti di sposamento del cursore. Quindi si può entrare nella modalità di modifica
del file premendo ad esempio il tasto
(insert) o
(append). Dunque, una volta
terminate le modifiche da apportare al file, si può uscire dalla modalità di modifica premendo
il tasto
. È possibile rendere permanenti le modifiche apportate, con il comando :w ed
uscire da vi con il comando :q. Se il file pippo non esiste, al primo salvataggio (:w) ne viene
creato uno.
____________________________________________________________________
Comando: emacs
Path: /usr/bin/emacs
SINTASSI
$ emacs [option] file
DESCRIZIONE_________________________________________________________________________________________
[da completare ...]
Per una spiegazione dettagliata delle numerose opzioni di entrambi gli editor menzionati si
rimanda alle relative man page.
A parte i numerosi editor di testo con interfaccia grafica come SciTE (v. sez. ??), ne
esistono anche altri per l’interfaccia carattere, tra i quali si possono menzionare nano e
pico.
Per la cronaca va menzionato anche il comando ed che è un text editor che permette di
interagire soltanto con una linea (alla volta) del contenuto del file da modificare, cioè un
line-oriented text editor. Questo tipo di editor sono stati i precursori degli editor di testo
utilizzati ad oggi, che permettono di interagire con intere porzioni del contenuto dei
file.