[successivo] [precedente] [inizio] [fine] [indice generale] [indice ridotto] [indice analitico] [volume] [parte]


Capitolo 196.   Creazione e modifica di file di testo

Il programma più importante che è necessario conoscere quando ci si avvicina a un nuovo sistema operativo è quello che permette di creare e modificare i file di testo normale. Nel caso dei sistemi Unix, è indispensabile conoscere VI, oltre ad altri applicativi simili che possono risultare più comodi da usare.

L'azione con la quale si indica l'intervento su un file del genere, viene espressa usualmente con la parola inglese editing, per cui alle volte questi programmi applicativi vengono identificati come degli editor.

196.1   VI

Nei sistemi Unix, l'applicativo più importante per la creazione e la modifica dei file di testo è VI. (1) (2) (3) (4) È più importante perché onnipresente, soprattutto nei dischetti di emergenza, anche se non si tratta di un programma comodo da utilizzare.

VI ha una logica di funzionamento tutta sua che ne impedisce l'utilizzo a chi non abbia letto qualcosa al riguardo. L'intento è quello di chiarire questa logica, almeno in parte, in modo da facilitarne l'utilizzo in caso di necessità.

Per GNU/Linux, non esiste in circolazione una versione originale di VI, ma tante interpretazioni di questo, con potenzialità più o meno ampliate. Per tale motivo, /bin/vi è solitamente un collegamento (simbolico o meno) al programma che si utilizza effettivamente. La realizzazione a cui si fa riferimento è nVI, che dovrebbe essere conforme allo standard POSIX 1003.2.

La pronuncia corretta del nome sembra essere «v-i-a-i», ovvero, come pronunciare vee eye in inglese.

196.1.1   Origini di VI

I primi programmi di scrittura per i file di testo permettevano di visualizzare e di intervenire su una sola riga alla volta. Questo è il caso di ed per gli ambienti Unix e di EDLIN per il Dos.

VI è uno dei primi programmi applicativi per la scrittura e la modifica di file di testo a utilizzare tutto lo schermo per visualizzare le righe del testo su cui si opera. Da ciò deriva il nome che fa riferimento al suo comportamento «visuale» (Visual).

A sua volta, VI è la derivazione di un programma precedente, EX, che si limitava a gestire una sola riga alla volta. Ma questa eredità è servita per incorporare i comandi tipici di EX.

196.1.2   Avvio

L'eseguibile vi può essere avviato o meno con l'indicazione di un file sul quale intervenire. Se questo file esiste, viene aperto e si ottiene la visualizzazione del suo contenuto per permetterne la modifica. Se non esiste, viene creato.

vi [opzioni] [file...]

È anche possibile l'indicazione di alcune opzioni, tra cui, le più importanti sono elencate nella tabella successiva.

Tabella 196.1. Alcune opzioni.

Opzione Descrizione
-R
I file vengono aperti (inizialmente) in sola lettura.
-c comando
Subito dopo aver caricato il primo dei file degli argomenti, viene eseguito il comando indicato.
-s file_di_comandi
Subito dopo aver caricato il primo dei file degli argomenti, vengono eseguiti i comandi contenuti nel file di comandi indicato.

Quando si avvia VI senza indicare alcun file, appare una schermata simile a quella della figura 196.2 in cui le righe dello schermo contrassegnate dal simbolo tilde (~) rappresentano lo spazio non utilizzato dal file.

Figura 196.2. Avvio di VI.

_
~
~
~
~
~
~
~
~
/tmp/vi.qbtyNe: new file: line 1                                               .

Normalmente, l'eseguibile vi può essere avviato utilizzando nomi diversi: per rispettare le tradizioni o per definire implicitamente degli attributi:

ex [opzioni] [file...]

Come già accennato, EX (precisamente l'eseguibile ex) è il programma da cui è derivato VI. Generalmente, nelle distribuzioni GNU/Linux si trova un collegamento (simbolico o meno) con questo nome che punta a vi. Alcune realizzazioni di VI, quando sono avviate con questo nome, tendono a comportarsi in maniera leggermente differente.

196.1.3   Modalità di funzionamento

VI distingue diverse modalità di funzionamento, altrimenti definibili come stati o contesti. Quando si avvia VI, questo si trova di solito nella modalità di comando che permette di usare tasti determinati, attribuendogli significati speciali (di comando). Quando si vuole agire per inserire o modificare del testo, occorre utilizzare un comando con il quale VI passa alla modalità di inserimento e modifica.

Per complicare ulteriormente le cose, c'è da aggiungere che esistono in realtà due tipi di comandi: «visuali» (visual) e «due punti» (colon). I comandi visuali sono i più semplici e si compongono di sequenze di uno o più tasti il cui inserimento non appare in alcuna parte dello schermo e si concludono senza la pressione del tasto [Invio]; i comandi «due punti» iniziano tutti con il simbolo : (da cui il nome), terminano con [Invio] e durante la digitazione appaiono sulla riga inferiore dello schermo. In particolare, questi ultimi sono quelli derivati da EX.

La modalità di inserimento si riferisce al momento in cui è possibile modificare il testo. Per passare dalla modalità di comando a quella di inserimento, si preme il tasto corrispondente alla lettera «i» (inserimento prima del cursore) o alla lettera «a» (inserimento dopo il cursore).

Per tornare alla modalità di comando, da quella di inserimento, è sufficiente premere il tasto [Esc]. Quando ci si trova già nella modalità di comando, la pressione del tasto [Esc] non produce alcunché o al massimo interrompe l'introduzione di un comando, di conseguenza, se lo si usa inavvertitamente o troppo, non ne derivano inconvenienti.

Lo svantaggio principale di questo tipo di approccio è quello di dover passare alla modalità di comando per qualunque operazione diversa dal puro inserimento di testo. Anche lo spostamento del cursore avviene attraverso dei comandi, obbligando l'utente a premere il tasto [Esc] prima di poter utilizzare i tasti per il suo spostamento.

Tuttavia, le realizzazioni più diffuse di VI addolciscono un po' il suo funzionamento introducendo l'uso dei tasti freccia nel modo consueto dei programmi di scrittura più recenti.

196.1.4   Posizione attiva

Per la descrizione del funzionamento di VI è importante definire il concetto di posizione attiva che si riferisce al punto in cui si trova il cursore. Estendendo il significato, si può parlare di riga attiva, colonna attiva e parola attiva, intendendo quelle su cui si trova il cursore.

196.1.5   Moltiplicatori

Prima di affrontare i comandi di VI è importante comprendere che l'effetto di molti di questi può essere moltiplicato utilizzando un numero. Il concetto è molto semplice e si richiama alla matematica: 2a = a+a.

196.1.6   Inserimento

Come già accennato, si può inserire o modificare del testo solo quando si passa alla modalità di inserimento attraverso il comando i (insert) oppure a (append). Durante questa fase, tutti i simboli della tastiera servono per inserire del testo. Con il VI standard si può usare:

Con le realizzazioni di VI più sofisticate, è concesso normalmente l'uso dei tasti freccia e in alcuni casi anche del tasto [Canc].

Per tutte le altre operazioni di modifica del testo si deve passare alla modalità di comando.

Figura 196.3. VI durante la fase di inserimento di testo.

Il mio primo documento scritto con VI.

Non e` facile, ma ne vale ugualmente la pena_
~
~
~
~
~
~
                                                                               .

I comandi a disposizione per passare alla modalità di inserimento sono molti e non si limitano quindi ai due modi appena descritti. La tabella 196.4 ne elenca alcuni.

Tabella 196.4. Elenco dei comandi utilizzabili per passare alla modalità di inserimento.

Comando Descrizione
I
Inserisce all'inizio della riga attiva.
i
Inserisce prima della posizione attiva.
A
Aggiunge alla fine della riga attiva.
a
Aggiunge dopo la posizione attiva.
O
Inserisce prima della riga attiva (inserendo una riga).
o
Aggiunge dopo la riga attiva (inserendo una riga).

196.1.7   Navigazione

Come già accennato, lo spostamento del cursore e di conseguenza della posizione attiva, avviene per mezzo di comandi che generalmente obbligano a terminare la fase di inserimento. Le realizzazioni di VI più recenti permettono l'uso dei tasti freccia durante la modalità di inserimento (oltre che durante la modalità di comando), ma questo è solo un aiuto minimo: in generale è necessario tornare alla modalità di comando.

I comandi normali per lo spostamento del cursore sono le lettere h, j, k e l, che rispettivamente spostano il cursore a sinistra, in basso, in alto e a destra. La ragione della scelta sta nella vicinanza di queste lettere nella maggior parte delle tastiere.

Figura 196.5. Promemoria visuale per i comandi che permettono lo spostamento del cursore.

tastiera

Salvo casi particolari e situazioni in cui questo concetto non è ragionevolmente applicabile, i comandi di spostamento, preceduti da un numero, vengono ripetuti tante volte quante ne rappresenta quel numero. Per esempio, il comando 2h sposta il cursore a sinistra di due posizioni.

Per raggiungere una riga determinata è possibile utilizzare il comando nG o :n (in questo ultimo caso, seguito da [Invio])

Per esempio, per raggiungere la decima riga di un documento ipotetico, si può utilizzare indifferentemente uno dei due comandi seguenti:

10G

:10[Invio]

Per fare scorrere il testo di una schermata alla volta si utilizzano le combinazioni di tasti [Ctrl B] e [Ctrl F] che rispettivamente spostano il testo all'indietro e in avanti (back e forward).

I comandi a disposizione per lo spostamento sono ovviamente numerosi, la tabella 196.6 ne elenca alcuni.

Tabella 196.6. Elenco dei comandi utilizzabili per la navigazione all'interno del testo.

Comando Descrizione
h
Sposta il cursore a sinistra di un carattere.
j
Sposta il cursore in basso nella riga successiva.
k
Sposta il cursore in alto nella riga precedente.
l
Sposta il cursore a destra di un carattere.
-
Sposta il cursore all'inizio della riga precedente.
+
Sposta il cursore all'inizio della riga successiva.
w
Sposta il cursore all'inizio della parola successiva.
e
Sposta il cursore alla fine della parola successiva.
b
Sposta il cursore all'inizio della parola precedente.
^
Sposta il cursore all'inizio della prima parola della riga.
0
Sposta il cursore all'inizio della riga.
$
Sposta il cursore alla fine della riga.
H
Sposta il cursore sulla prima riga che appare sullo schermo.
M
Sposta il cursore sulla riga centrale dello schermo.
L
Sposta il cursore sull'ultima riga che appare sullo schermo.
G
Sposta il cursore sull'ultima riga del file.
nG
Sposta il cursore sulla riga identificata dal numero n.
|
Sposta il cursore sulla prima colonna (all'inizio della riga).
n|
Sposta il cursore sulla colonna identificata dal numero n.
:n
Sposta il cursore sulla riga identificata dal numero n.
[Ctrl B] Fa scorrere il testo all'indietro di una schermata.
[Ctrl F] Fa scorrere il testo in avanti di una schermata.
[Ctrl U] Fa scorrere il testo all'indietro di mezza schermata.
[Ctrl D] Fa scorrere il testo in avanti di mezza schermata.

Segue la descrizione di alcuni esempi.

196.1.8   Modificatori

I comandi di spostamento, esclusi quelli che iniziano con i due punti (:) e quelli che si ottengono per combinazione ([Ctrl ...]), possono essere utilizzati come modificatori di altri comandi.

All'interno di VI manca il concetto di zona di intervento. Per definire l'estensione di un comando lo si può far precedere da un moltiplicatore (un numero) e in più, o in alternativa, lo si può fare seguire da un comando di spostamento. Il comando di spostamento viene utilizzato in questo caso per definire una zona che va dalla posizione attiva a quella di destinazione del comando, in modo che su questa zona intervenga il comando precedente.

Tuttavia, per poter applicare questo concetto, è necessario che i comandi da utilizzare in associazione con i modificatori (di spostamento), siano stati previsti per questo. Deve trattarsi cioè di comandi che richiedono questa ulteriore aggiunta.

Come viene mostrato in seguito, il comando x permette di cancellare quello che appare in corrispondenza del cursore. Quando viene premuto il tasto [x] si ottiene subito la cancellazione del carattere, pertanto, a questo genere di comandi non si può far seguire alcun modificatore. Questo tipo di comandi può solo essere preceduto da un moltiplicatore.

Si comporta diversamente il comando d che invece deve essere seguito da un modificatore e con questo definisce una zona da cancellare. Per esempio, dw cancella dalla posizione attiva fino all'inizio della prossima parola e d$ cancella dalla posizione attiva fino alla fine della riga.

196.1.9   Cancellazione

Durante la fase di inserimento è possibile cancellare solo il carattere appena scritto utilizzando il tasto [Backspace], sempre che la realizzazione di VI a disposizione lo consenta, altrimenti si ottiene solo l'arretramento del cursore. Per qualunque altro tipo di cancellazione occorre passare alla modalità di comando.

I comandi di cancellazione più importanti sono x, d seguito da un modificatore e dd. Il primo cancella il carattere che si trova in corrispondenza della posizione attiva, cioè del cursore, il secondo cancella dalla posizione attiva fino all'estensione indicata dal modificatore e il terzo cancella tutta la riga attiva. Con VI non è possibile cancellare il carattere che conclude una riga (il codice di interruzione di riga), di conseguenza, per unire due righe insieme si utilizza il comando J oppure j (bisogna provare).

Tabella 196.7. Elenco dei comandi utilizzabili per cancellare.

Comando Descrizione
x
Cancella il carattere che si trova sulla posizione attiva.
J
j
Unisce la riga attiva con quella successiva.
dd
Cancella la riga attiva.
dmod
Cancella dalla posizione attiva fino all'estensione indicata dal modificatore.
D
agisce come d$.

Segue la descrizione di alcuni esempi.

196.1.10   Sostituzione

La modifica del testo inserito può avvenire attraverso i comandi di cancellazione già visti, oppure attraverso comandi di sostituzione. Generalmente si tratta di comandi che prima cancellano parte del testo e subito dopo attivano l'inserimento.

I comandi di sostituzione più importanti sono c seguito da un modificatore e cc. Il primo sostituisce dalla posizione attiva fino all'estensione indicata dal modificatore e il secondo sostituisce tutta la riga attiva.

A fianco di questi se ne aggiungono un paio che possono essere utili proprio per il fatto che non passano alla modalità di inserimento: rx e ~. Il primo sostituisce il carattere in corrispondenza del cursore con quello rappresentato da x e il secondo inverte le lettere minuscole in maiuscole e viceversa.

Tabella 196.8. Elenco dei comandi di sostituzione e rimpiazzo.

Comando Descrizione
C
Sostituisce dalla posizione attiva alla fine della riga.
cc
Sostituisce la riga attiva a partire dall'inizio.
cmod
Sostituisce dalla posizione attiva fino all'estensione indicata dal modificatore.
rx
Rimpiazza quanto contenuto nella posizione attiva con x.
~
Inverte maiuscole e minuscole.

Segue la descrizione di alcuni esempi.

196.1.11   Copia e spostamento di porzioni di testo

La gestione della copia e dello spostamento di testo attraverso VI è un po' complicata. Per questa attività si utilizzano delle aree temporanee di memoria alle quali si possono accodare diverse parti di testo.

L'operazione con la quale si copia una porzione di testo in un'area temporanea di memoria viene detta yanking, ovvero estrazione, giustificando così l'uso della lettera «y» nei comandi che compiono questa funzione.

Le aree temporanee di memoria per lo spostamento o la copia di testo possono essere 27: una per ogni lettera dell'alfabeto e una aggiuntiva senza nome.

Il modo più semplice di gestire questo meccanismo è quello di usare l'area temporanea senza nome. Per copiare una porzione di testo si può utilizzare il comando y seguito da un modificatore, oppure il comando yy che invece si riferisce a tutta la riga attiva. Per incollare il testo copiato, dopo aver posizionato il cursore nella posizione di destinazione, si può utilizzare il comando p oppure P, a seconda che si intenda incollare prima o dopo la posizione del cursore.

Il comandi p e P non cancellano il contenuto dell'area temporanea, di conseguenza, se serve si può ripetere l'operazione di inserimento riutilizzando questi comandi.

Se invece di copiare si vuole spostare il testo, al posto dei comandi di estrazione si possono usare quelli di cancellazione, che, anche se non è stato chiarito precedentemente, prima di cancellare il testo fanno una copia nell'area temporanea.

Tabella 196.9. Elenco dei comandi per le operazioni di copia e spostamento di testo che fanno uso dell'area temporanea di memoria senza nome.

Comando Descrizione
yy
Copia la riga attiva nell'area temporanea.
ymod
Copia nell'area temporanea il testo fino all'estensione indicata dal modificatore.
dd
Trasferisce la riga attiva nell'area temporanea.
dmod
Trasferisce nell'area temporanea il testo fino all'estensione indicata dal modificatore.
p
Incolla dopo la posizione del cursore.
P
Incolla prima della posizione del cursore.

Segue la descrizione di alcuni esempi.

196.1.12   Copia e spostamento con nome

Quando si vogliono utilizzare delle aree temporanee di memoria specifiche, cioè identificate attraverso le lettere dell'alfabeto, si procede nei modi già visti nel caso dell'uso dell'area temporanea senza nome, con la differenza che i comandi sono preceduti da "x, dove x è la lettera che si vuole usare.

Si introduce però una novità importante: è possibile aggiungere del testo a un'area temporanea: basta indicarla attraverso una lettera maiuscola.

Tabella 196.10. Elenco dei comandi per le operazioni di copia e spostamento di testo che fanno uso delle aree temporanee con nome.

Comando Descrizione
"xyy
Copia la riga attiva nell'area temporanea x
"xymod
Copia nell'area temporanea x il testo fino all'indicazione dal modificatore.
"xdd
Trasferisce la riga attiva nell'area temporanea x.
"xdmod
Trasferisce nell'area temporanea x il testo fino all'indicazione dal modificatore.
"xp
Incolla il contenuto dell'area temporanea x prima del cursore.
"xP
Incolla il contenuto dell'area temporanea x dopo il cursore.

Segue la descrizione di alcuni esempi.

196.1.13   Ricerche

Per effettuare delle ricerche all'interno del documento aperto con VI si possono utilizzare le espressioni regolari (capitolo 586) attraverso due comandi un po' strani: / e ?. La sintassi per la ricerca in avanti è:

/modello

Per la ricerca a ritroso è la seguente:

?modello

Nel momento in cui si preme il tasto della barra obliqua o del punto interrogativo, VI visualizza il comando nella riga inferiore dello schermo permettendone il controllo e la correzione come avviene per i comandi che iniziano con i due punti. Al termine, l'inserimento di questo tipo di comando deve essere concluso con un [Invio].

Tabella 196.11. I comandi di ricerca attraverso espressioni regolari.

Comando Descrizione
/modello
Cerca in avanti una corrispondenza con il modello indicato.
?modello
Cerca all'indietro una corrispondenza con il modello indicato.
n
Ripete l'ultimo comando / o ?.
N
Ripete l'ultimo comando / o ? in modo inverso .

Il tipo di espressione regolare che può essere utilizzato con VI è solo quello elementare e valgono in particolare le regole indicate nella tabella 196.12.

Tabella 196.12. Le espressioni regolari che dovrebbero essere disponibili con la maggior parte delle realizzazioni di VI.

Simbolo Descrizione
.
Corrisponde a un carattere qualsiasi.
\
Fa perdere il significato speciale che può avere il carattere seguente.
^
Corrisponde all'inizio di una riga.
$
Corrisponde alla fine di una riga.
[abc]
Corrisponde a un carattere qualsiasi tra quelli tra parentesi quadre.
[^abc]
Corrisponde a un carattere qualsiasi diverso da quelli tra parentesi quadre.
[a-z]
Un carattere qualsiasi nell'intervallo compreso tra a e z.
[^a-z]
Un carattere qualsiasi diverso dall'intervallo compreso tra a e z.

Segue la descrizione di alcuni esempi.

196.1.14   Ricerche e sostituzioni

La ricerca e sostituzione sistematica avviene attraverso un comando particolare che inizia con i due punti. La sua sintassi è la seguente:

:inizio,fines/modello_da_cercare/sostituzione/[g][c]

L'indicazione inizio e fine fa riferimento alle righe su cui intervenire. Si possono indicare dei numeri, oppure dei simboli con funzioni simili. Il simbolo $ può essere usato per indicare l'ultima riga del file. Un punto singolo (.) rappresenta la riga attiva. Il simbolo % viene invece utilizzato da solo per indicare tutte le righe del file.

Il modello utilizzato per la ricerca viene espresso secondo la forma delle espressioni regolari.

Normalmente, il valore da sostituire al modello cercato è fisso, ma può contenere un riferimento alla stringa trovata, attraverso il simbolo &.

La direttiva g specifica che si deve intervenire su tutte le occorrenze della corrispondenza con il modello, altrimenti la sostituzione riguarda solo la prima di queste.

La direttiva c specifica che ogni sostituzione deve essere confermata espressamente.

Segue la descrizione di alcuni esempi.

196.1.15   Annullamento dell'ultimo comando

VI permette di annullare l'ultimo comando inserito attraverso il comando u. A seconda della realizzazione di VI utilizzata, richiamando nuovamente il comando u si riottengono le modifiche annullate precedentemente, oppure si continuano ad annullare gli effetti dei comandi precedenti.

Tabella 196.13. Annullamento di un comando.

Comando Descrizione
u
Annulla l'ultimo comando.
U
Annulla le modifiche sulla riga attiva.

196.1.16   Caricamento, salvataggio e conclusione

Il file o i file utilizzati per la modifica (compresi quelli che si creano) vengono aperti normalmente attraverso l'indicazione nella riga di comando, al momento dell'avvio dell'eseguibile vi.

Il salvataggio di un file può essere fatto per mezzo del comando :w (write) seguito eventualmente dal nome del file (quando si vuole salvare con un nome diverso oppure quando si sta creando un file nuovo). La conclusione dell'attività di VI si ottiene con il comando :q (quit). I comandi possono essere combinati tra loro, per esempio quando si vuole salvare e concludere l'attività simultaneamente con il comando :wq. Il punto esclamativo (!) può essere usato alla fine di questi comandi per forzare le situazioni, come quando si vuole concludere l'attività senza salvare con il comando :q!.

Dal momento che VI non mostra normalmente alcuna informazione riferita al file su cui si opera (compreso il nome), il comando :f (oppure la combinazione [Ctrl g]) mostra sulla riga inferiore dello schermo: il nome del file aperto, le dimensioni e il numero della riga attiva.

Tabella 196.14. I comandi per il caricamento dei file e il loro salvataggio.

Comando Descrizione
:e nome_file
Carica il file indicato per poterlo modificare.
:e!
Ricarica il file annullando le modifiche fatte nel frattempo.
:r nome_file
Legge il file indicato e ne inserisce il contenuto dopo la riga attiva.
:f
Mostra il nome e le caratteristiche del file aperto.
:w
Salva.
:w nome_file
Salva una copia con il nome indicato.
:wq
Salva e termina l'esecuzione.
:q
Fine lavoro.
:q!
Fine lavoro forzato.

Figura 196.15. VI durante l'esecuzione del comando :w, prima della pressione conclusiva del tasto [Invio]

Il mio primo documento scritto con VI.

Non e` facile, ma ne vale ugualmente la pena
~
~
~
~
~
~
:w esempio_                                                                    .

196.1.17   Variabili

VI ha ereditato da EX delle variabili di configurazione. Non si tratta di variabili di ambiente, ma di variabili interne a VI. Per attivare una variabile si utilizza il comando seguente:

:set [no]nome_della_variabile

Il prefisso no, prima del nome della variabile, serve per disattivarla. La tabella 196.16 mostra l'elenco di alcune di queste variabili.

Tabella 196.16. Variabili utilizzate da VI attraverso il comando :set.

Variabile Descrizione
autoindent
Mantiene i livelli di rientro nelle righe nuove.
beautify
Elimina i caratteri speciali non stampabili.
ignorecase
Nelle ricerche, ignora la differenza tra maiuscole e minuscole.
list
Mostra i caratteri di tabulazione e di interruzione di riga.
number
Visualizza i numeri delle righe.
ruler
Visualizza le coordinate del cursore alla base dello schermo.

Segue la descrizione di alcuni esempi.

196.1.18   Comandi particolari

Nella tabella seguente sono elencati una serie di comandi particolari che non sono stati inclusi in altre categorie specifiche.

Comando Descrizione
mx
Etichetta la posizione corrente con la lettera rappresentata da x. Valgono solo le lettere minuscole. Il testo non viene modificato.
'x
Sposta il cursore all'inizio della riga che contiene l'etichetta rappresentata da x.
[Ctrl L] Riscrive la schermata: se sono apparsi messaggi che creano difficoltà alla visualizzazione del testo su cui si sta lavorando, questo comando permette di farli scomparire mostrando il testo effettivo del file.
:!comando
Esegue il comando di shell indicato.
:ab abbreviazione testo_da_sostituire
Permette di stabilire un'abbreviazione da sostituire sistematicamente con tutto quello che segue il comando. Se si usa :ab da solo, si ottiene un elenco delle abbreviazioni disponibili.

196.1.19   File di configurazione

Può essere utilizzato il file ~/.exrc per personalizzare la configurazione di VI attraverso comandi colon (quelli tipici di EX). Le cose più comuni che possono apparire all'interno di questo file sono la definizione di abbreviazioni e la definizione di alcune variabili. Segue un esempio:

:ab lx Linux
:ab xwin X Window System
:set autoindent
:set number

196.1.20   Problemi di portabilità

Uno dei vantaggi importanti nell'uso di VI sta nella disponibilità di realizzazioni di questo programma per qualsiasi piattaforma. All'inizio di questo gruppo di sezioni su VI si accennava al fatto che esiste un'ottima versione Dos in grado di funzionare molto bene anche con i vecchi elaboratori dotati di poca memoria.

Quando si trasferiscono testi da un sistema GNU/Linux a Dos e viceversa si pone il problema dell'insieme di caratteri a disposizione: su GNU/Linux si utilizza presumibilmente la codifica UTF-8, oppure Latin 1, mentre con il Dos no.

La soluzione più semplice a questo problema è probabilmente quella di usare Latin 1 in generale e di convertire le lettere accentate Dos in Latin 1 quando possibile. Per questo si può realizzare un semplice file di comandi da eseguire automaticamente utilizzando l'opzione -s.(5)

:1,$s/~E/à/g
:1,$s/~J/è/g
:1,$s/~B/é/g
:1,$s/~M/ì/g
:1,$s/~U/ò/g
:1,$s/~W/ù/g

In pratica, la sintassi da usare all'avvio di VI dovrebbe essere la seguente:

vi -s file_comandi file_da_elaborare

In generale, i problemi legati alla conversione di un file da un insieme di caratteri all'altro, si risolvono attraverso l'uso di recode, descritto nella sezione 419.1.

196.2   E3

E3 (6) sembra essere il più piccolo programma esistente per la creazione e modifica dei file di testo. A seconda della piattaforma per il quale è stato compilato, può trattarsi di una versione in linguaggio assembler o in linguaggio C. Nella sua edizione normale è in grado di simulare il comportamento di altri programmi del genere, più comuni, avviandolo con il nome appropriato:

Comando Descrizione
e3 [file]
e3ws [file]
avvia E3 in modalità WordStar;
e3em [file]
avvia E3 in modalità Emacs;
e3pi [file]
avvia E3 in modalità Pico;
e3vi [file]
avvia E3 in modalità VI;
e3ne [file]
avvia E3 in modalità Nedit.

Data la compatibilità di E3 con altri programmi più comuni, non è necessario descrivere nel dettaglio il suo funzionamento, a parte l'uso di alcuni comandi specifici:

Comando Descrizione
[Esc][:][h] dalla modalità VI mostra la guida interna;
[Alt h] in tutte le altre modalità di funzionamento mostra la guida interna;
[Ctrl k][m] e3xx[Invio] dalla modalità WordStar passa alla modalità corrispondente alla sigla xx;
[Ctrl q][m] e3xx[Invio] dalla modalità Pico passa alla modalità corrispondente alla sigla xx;
[Alt x] e3xx[Invio]
[Esc][x] e3xx[Invio]
dalla modalità Emacs passa alla modalità corrispondente alla sigla xx;
[Ctrl e] e3xx[Invio] dalla modalità Nedit passa alla modalità corrispondente alla sigla xx;
[Esc][;] e3xx[Invio] dalla modalità VI passa alla modalità corrispondente alla sigla xx;

196.3   AE

AE (7) è un programma per la creazione e la modifica di file di testo che non ha doti particolari, però viene utilizzato alle volte, anche in sostituzione a VI, date le sue dimensioni ridotte e la sua configurabilità. Può essere utile conoscere l'uso elementare di AE perché si potrebbe essere costretti a usarlo quando ci si trova in condizioni di emergenza.

196.3.1   Configurazione di AE

AE, pur essendo un programma che utilizza poche risorse, consente una configurazione dettagliata del suo funzionamento. Questo permette di solito di farlo funzionare in modo simile a VI o a Emacs. In generale, non è il caso di intervenire nella configurazione, tuttavia è bene sapere come si articola.

Il file di configurazione generale è /etc/ae.rc, mentre per una configurazione particolare, AE utilizza il file ./ae.rc, se esiste, oppure il file ~/ae.rc (nella directory personale dell'utente).

L'eseguibile ae può essere avviato anche con l'opzione -f per indicare un file di configurazione alternativo. Questo fatto viene sfruttato alle volte per realizzare degli script che permettono di avviarlo al posto di altri programmi del genere, utilizzando la configurazione migliore per emularne il comportamento.

196.3.2   Avvio di AE

La sintassi per l'utilizzo dell'eseguibile ae è molto semplice e si spiega praticamente da sola: se si usa l'opzione -f si intende indicare esplicitamente un file di configurazione particolare.

ae [-f file_di_configurazione] [file]

Figura 196.22. Avvio di AE.

File "" 0 bytes.
File read and write  ^X I ^X^S      Left, down, up, right   ^B  ^N  ^P  ^F
Version, exit, quit  ^X^V ^X^C ^Q   Word left and right     <esc>B  <esc>F
Macros               ^M             Page down and up        ^V      <esc>V
Help on and off      ^X^H           Front and end of line   ^A      ^E
Redraw               ^L             Top and end of file     <esc><  <esc>>
Insert               typed keys     Delete left and right   BACKSPACE DEL
Literal escape       ^[             Block, cut, paste       ^@   ^W   ^Y
Undo                 ^_             Invert case             <esc>C
....5...10....5...20....5...30....5...40....5...50....5...60....5...70....5...80
_
<< EOF >>











.

In condizioni normali, avviando AE senza indicare argomenti si dovrebbe vedere quello che qui viene mostrato nella figura 196.22. Nella parte superiore dello schermo vengono riepilogati i comandi più importanti, annotati con la simbologia tradizionale del tipo ^x, a rappresentare delle combinazioni di tasti del tipo [Ctrl x].

Se si utilizza AE da una console virtuale di GNU/Linux, non si dovrebbero avere problemi a spostare il cursore con i tasti freccia e gli altri tasti usati solitamente per questi scopi; inoltre, dal quadro che si vede, dovrebbe essere chiaro che si possono usare i comandi [Ctrl x][i] e [Ctrl x][Ctrl s], rispettivamente per caricare e per salvare un file.

196.3.3   Compatibilità con VI

AE può essere configurato per funzionare in modo simile a VI. È il caso di sottolineare questo fatto, perché può capitare di dover usare un sistema GNU/Linux minimo di emergenza in cui con il comando vi si ottiene invece l'avvio di AE in una modalità pseudo-VI: è proprio questa compatibilità incompleta che può creare disagio in quelle situazioni.

La configurazione normale di AE per l'uso compatibile con VI, fa sì che AE si presenti normalmente come si vede nella figura 196.23 (dove in particolare AE viene usato per modificare il file /etc/lilo.conf).

Dal riepilogo dei comandi nella parte superiore dello schermo si possono riconoscere alcuni comandi tipici di VI, tuttavia, si deve tenere presente che quelli che iniziano con i classici due punti (:), non vengono mostrati nella parte bassa dello schermo, come invece accade nella tradizione, ma si digitano alla cieca.

Figura 196.23. Avvio di AE con la configurazione che lo rende compatibile con VI.

File "/etc/lilo.conf" 295 bytes read.
File read and write     :r      :w      Left, down, up, right   h,j,k,l
exit and abort          :q      :q!     Word left and right     b       w
Macros                  :map            Page down and up        PgDn PgUp
Help on and off         F1              Front and end of line   0       $
Version Redraw          :ver    ^L       Top and bottom of file  Home End
Insert                  i               Delete left and right   X       x
Open                    O       o       Append                  A       a
Delete                  dd      d[wb0]  Copy                    yy      y[wb0]
Literal escape          ^V               Block, cut, and paste   F2  F3  F4
Undo                    u               Invert case             ~
Print   (only upper)    P       p       Shift   (only right)    >>
....5...10....5...20....5...30....5...40....5...50....5...60....5...70....5...80
boot=/dev/hda
map=/boot/map
install=/boot/boot.b
prompt
timeout=50
image=/boot/vmlinuz-2.2.1-1
        label=linux
        root=/dev/hda4
        append="console=tty10"
        read-only
image=/boot/vmlinuz-2.2.1-2

Per esempio, volendo salvare le modifiche del file, occorre digitare il comando :w seguito da [Invio], senza vederlo apparire da nessuna parte.

196.4   Joe

Joe (8) è solo uno tra i tanti programmi adatti per la creazione e la modifica di file di testo. Il vantaggio principale di questo programma è l'assenza di una modalità di comando distinta da quella di inserimento del testo, come invece avviene con VI. Il suo difetto principale è l'assenza di un menù.

Può gestire più file contemporaneamente, collocandoli all'interno di finestre differenti.

196.4.1   Configurazione di Joe

A prima vista non sembrerebbe, ma Joe è un programma altamente configurabile. Per questo viene utilizzato un file di configurazione contenente opzioni predefinite, comandi della tastiera e schede di guida (help).

Il file di configurazione viene cercato:

La distribuzione normale di Joe fornisce diversi file di configurazione, che vengono presi in considerazione a seconda del nome utilizzato per avviare il programma (per esempio attraverso un collegamento simbolico).

Le indicazioni sul funzionamento di Joe che appaiono nelle sezioni seguenti, fanno riferimento alla configurazione normale, quella contenuta nel file /etc/joe/joerc che viene utilizzata in modo predefinito quando l'utente avvia il programma con il suo nome originale e non ha predisposto alcuna configurazione personalizzata.

Se si vuole personalizzare la configurazione, conviene copiare questo file nella propria directory personale e rinominarlo, in modo da ottenere ~/.joerc.

196.4.2   Avvio di Joe

L'eseguibile joe può essere avviato o meno con l'indicazione di uno o più file su cui intervenire. I file indicati, esistenti, vengono aperti e collocati ognuno in una finestra del programma, mentre quelli che non esistono vengono creati.

joe [opzioni_globali]  [[opzioni_particolari]file]...

Le opzioni sono suddivise in due gruppi: quelle globali che intervengono su tutti i file e sono collocate prima di qualunque indicazione di file; quelle particolari che precedono il nome del file a cui si riferiscono.

Joe può essere avviato con altri nomi, attraverso la predisposizione di collegamenti, oppure modificando direttamente il nome dell'eseguibile. A seconda del nome, viene utilizzato un file di configurazione differente che adatta Joe al funzionamento di altri programmi del genere. Per conoscere queste caratteristiche particolari, si può consultare la documentazione originale.

Quando si avvia Joe senza l'indicazione di alcuna opzione, né di alcun file, il programma si presenta come nella figura 196.24. Viene mostrata una finestra centrale destinata a contenere il testo di un file da creare, con sopra una riga di stato e in basso le note sul copyright.

Figura 196.24. Avvio di Joe.

    IW   Unnamed                      Row 1    Col 1   10:07  Ctrl-K H for help
_

















** Joe's Own Editor v2.8 ** Copyright (C) 1995 Joseph H. Allen **l-K H for help

Come si può osservare, sulla riga di stato appaiono: le lettere I e W che stanno rispettivamente per insert e wrap; il nome del file, in questo caso Unnamed; la posizione del cursore; l'ora; un promemoria che ricorda come fare per richiamare la guida interna (con la sequenza [Ctrl k][h]).

La riga di stato viene aggiornata a intervalli regolari di un secondo, questo per non appesantire il sistema con un'attività che in generale non è urgente.

Una funzione importante della riga di stato è quella di visualizzare, nella parte sinistra, l'inserimento di un comando composto da una sequenza di tasti, in modo da poter controllare ciò che si sta facendo o ciò che non è stato terminato.

La riga inferiore dello schermo viene utilizzata normalmente per l'inserimento di informazioni che completano un comando, come il nome di un file da salvare o da caricare. Quando questa parte non viene utilizzata, la finestra contenente il testo del file su cui si lavora si riappropria di quello spazio.

Tabella 196.25. Alcune opzioni globali.

Opzione Descrizione
-asis
Uno dei problemi a cui si va incontro con i programmi da utilizzare in un terminale a caratteri è quello della codifica ASCII che può essere visualizzata sullo schermo. Generalmente è consentita la visualizzazione dei codici che utilizzano i primi 7 bit, cosa che esclude le lettere accentate e altri simboli speciali.
Questa opzione fa in modo che si utilizzi una codifica a 8 bit, visualizzando così tutti i simboli. Se il terminale a disposizione non lo consente, è meglio non attivare questa opzione: Joe mostra così dei simboli alternativi, evidenziandoli in modo da lasciare intendere che in realtà si tratta di qualcosa di diverso.
-exask
La conclusione normale dell'attività con un file coincide con il salvataggio dello stesso (si ottiene con la sequenza [Ctrl k][x]). Con questa opzione, si vuole fare in modo che venga sempre richiesta una conferma, in modo da avere la possibilità di cambiare nome.
-help
Visualizza il riassunto dei comandi a disposizione nella parte superiore dello schermo, come quando si utilizza la sequenza [Ctrl k][h].
-marking
Con questa opzione si facilita la visualizzazione del testo che viene marcato quando si vuole iniziare un'operazione di taglia-copia-incolla.
-lightoff
Con questa opzione si fa in modo che al termine di un'operazione di copia, il testo non sia più evidenziato. Potrebbe non essere opportuno attivare questa opzione quando si intendono eseguire varie operazioni di copia successive con lo stesso blocco di partenza.

Tabella 196.26. Alcune opzioni particolari.

Opzione Descrizione
-crlf
Fa in modo che le righe siano terminate con la sequenza <CR><LF> come si fa nell'ambiente Dos.
-rdonly
Il file viene aperto in sola lettura.

196.4.3   Comandi

I comandi che si possono impartire a Joe sono generalmente in forma di sequenza di tasti iniziata da una combinazione con il tasto [Ctrl]. Da un punto di vista tecnico, questo è un vantaggio, perché non si usano combinazioni con un tasto [meta] che può essere un problema attraverso un terminale. Con questo programma, non esistono quindi le modalità di funzionamento che distinguono tra la fase di inserimento e modifica e la fase di comando, come avviene invece con VI.

Teoricamente si può fare tutto utilizzando solo combinazioni con il tasto [Ctrl], anche se in pratica, quando il terminale lo consente, conviene utilizzare anche tasti con funzionalità comuni come i tasti freccia, i tasti pagina, [Backspace], [Canc] e [Esc]. In particolare, conviene ricordare che [Esc] corrisponde a [Ctrl [] («control», «parentesi quadra aperta»).

La documentazione di Joe e la sua guida interna, utilizzano la notazione tradizionale per indicare le combinazioni di tasti e le sequenze di questi. per cui, ^KH rappresenta la sequenza [Ctrl k][h].

Tutto quello che si fa con Joe può essere interrotto con la combinazione [Ctrl c]. Se si stava introducendo un comando, questo viene annullato, mentre se ci si trovava semplicemente a inserire o modificare il testo, viene proposta la conclusione (senza salvataggio) dell'attività su quel file particolare. Fortunatamente viene chiesta una conferma e si può annullare nuovamente con un'ulteriore combinazione [Ctrl c].

196.4.4   Guida interna

La guida interna di Joe è semplicemente un promemoria di comandi che occupano la parte superiore dello schermo, lasciando la parte inferiore per le operazioni di inserimento e modifica del testo. Per visualizzarla e successivamente per farla scomparire, si utilizza la sequenza [Ctrl k][h], come suggerisce la riga di stato nella parte destra. La figura 196.27 mostra un esempio di questa guida.

Figura 196.27. La guida interna di Joe.

   Help Screen    turn off with ^KH    more help with ESC . (^[.)
 CURSOR           GO TO            BLOCK      DELETE   MISC         EXIT
 ^B left ^F right ^U  prev. screen ^KB begin  ^D char. ^KJ reformat ^KX save
 ^P up   ^N down  ^V  next screen  ^KK end    ^Y line  ^T  options  ^C  abort
 ^Z previous word ^A  beg. of line ^KM move   ^W >word ^R  refresh  ^KZ shell
 ^X next word     ^E  end of line  ^KC copy   ^O word< ^@  insert   FILE
 SEARCH           ^KU top of file  ^KW file   ^J >line SPELL        ^KE edit
 ^KF find text    ^KV end of file  ^KY delete ^_ undo  ^[N word     ^KR insert
 ^L  find next    ^KL to line No.  ^K/ filter ^^ redo  ^[L file     ^KD save
    IW   Unnamed                      Row 1    Col 1   10:24  Ctrl-K H for help
_








.

La guida si compone di diverse schede. La prima di queste è quella che si vede nella figura, mentre le successive si ottengono con la sequenza [Esc][.] (escape punto). Quando si scorre tra le schede, per tornare a una scheda precedente si utilizza la sequenza [Esc][,] (escape virgola).

196.4.5   Inserimento e modifica normali

La scrittura e la modifica di testo avviene nel modo più semplice: la pura digitazione. Come ripetuto più volte, Joe non distingue la modalità di inserimento e modifica da quella di comando, perché i comandi utilizzano combinazioni di tasti a base di [Ctrl]. La tabella 196.28 riassume brevemente le possibilità esistenti.

Tabella 196.28. Riepilogo delle funzionalità di inserimento e modifica di testo con Joe.

Comando Alternativa Descrizione
Caratteri normali Inseriscono il testo corrispondente.
[Ctrl h] [Backspace] Cancella il carattere a sinistra del cursore.
[Ctrl d] [Canc] Cancella il carattere in corrispondenza del cursore.
[Invio] Inserisce un'interruzione di riga.
[Ctrl y] Elimina la riga su cui si trova il cursore.
[Ctrl j] Elimina il testo tra il cursore e la fine della riga.
[Ctrl _] [Ctrl -] Annulla l'ultimo comando, compresa la digitazione.
[Ctrl ^] [Ctrl ì] Ripete l'ultimo comando annullato, compresa la digitazione.
[Ctrl r] Ripristina il testo sullo schermo.

È importante ricordare che i caratteri che utilizzano più di 7 bit non vengono visualizzati se non si specifica l'opzione -asis o se non si configura il file ~/.joerc in tal senso.

196.4.5.1   Caratteri di controllo e metacaratteri

Joe consente di utilizzare delle sequenze particolari di simboli per l'inserimento di codici ASCII che non possono essere scritti altrimenti. Per l'inserimento di questi codici, si possono usare due tipi di sequenze denominate: caratteri di controllo e metacaratteri.

La tecnica dei caratteri di controllo utilizza il simbolo apice inverso (`) per iniziare la sequenza relativa. Quello che segue può essere un numero decimale di tre cifre, oppure un numero esadecimale o un numero ottale. Quando si preme ` appare infatti il promemoria seguente che ricorda le tre possibilità.

Ctrl- (or 0-9 for dec. ascii, x for hex, or o for octal)   

I codici che non possono essere rappresentati e appartengono alla fascia che va da 0 a 31 in decimale, vengono rappresentati con i simboli @, A, B, C ... X, Y, Z, [, ^, ], \ e _. Tali simboli, se il terminale lo consente, appaiono sottolineati.

I codici che non possono essere rappresentati e appartengono alla fascia che va da 128 in poi, appaiono nella forma dei caratteri corrispondenti che si ottengono togliendo l'ottavo bit (ovvero sottraendo 128), ma invertiti.

La tecnica dei metacaratteri utilizza la sequenza [Ctrl \][x], dove x corrisponde al carattere che si ottiene togliendo l'ottavo bit al simbolo che invece si vuole ottenere. Quando si preme [Ctrl \], prima di premere il tasto finale, appare un invito a completare il metacarattere nell'ultima riga dello schermo.

Meta-

Quando si dispone di un terminale configurato correttamente, ci sono poche probabilità di dover utilizzare i caratteri di controllo o i metacaratteri per inserire lettere accentate o altri simboli particolari, dal momento che la tastiera dovrebbe rispondere correttamente. Quando però ci si trova a utilizzare un terminale mal configurato, queste tecniche diventano molto importanti.

Nello stesso modo, se possibile, conviene utilizzare una visualizzazione sullo schermo a 8 bit, in modo da vedere correttamente tutti i simboli che compongono l'insieme di caratteri per cui è configurato il proprio sistema (per l'Italia dovrebbe trattarsi di ISO 8859-1). Se però il terminale non lo consente, la visualizzazione attraverso l'inversione del testo è comunque un'ottima alternativa.

La tabella 196.31 elenca le corrispondenze tra le lettere accentate e i caratteri corrispondenti quando si elimina l'ottavo bit.

Tabella 196.31. Lettere accentate e simboli corrispondenti nei terminali a 7 bit, quando la codifica a 8 bit di partenza è ISO 8859-1.

ISO 8859-1 Simbolo corrispondente ISO 8859-1 Simbolo corrispondente
à ` è h
é i ì l
ò r ù y
À @ È H
É I Ì L
Ò R Ù Y

196.4.6   Navigazione

La navigazione del cursore all'interno del testo avviene in modo semplice e intuitivo attraverso l'uso dei tasti freccia e pagina, quando possibile, altrimenti con combinazioni di tasti abbastanza facili. Una particolarità importante di questo programma è la possibilità di raggiungere facilmente la zona del testo dove sono state fatte modifiche in precedenza. La tabella 196.32 elenca i tasti e le combinazioni utili per la navigazione del cursore nel testo.

Tabella 196.32. Comandi utili per la navigazione con Joe quando è configurato nel modo predefinito.

Tasto o combinazione Risultato
tasti freccia Spostano il cursore di una posizione nella direzione indicata dal tasto.
[Ctrl f] Spostamento a destra di un carattere.
[Ctrl b] Spostamento a sinistra di un carattere.
[Ctrl p] Spostamento in alto di una riga.
[Ctrl n] Spostamento in basso di una riga.
tasti pagina Spostano il testo in modo verticale di un numero consistente di righe.
[Ctrl u] Spostamento alla schermata precedente.
[Ctrl v] Spostamento alla schermata successiva.
[Ctrl k][u] Spostamento all'inizio del file.
[Ctrl k][v] Spostamento alla fine del file.
[Ctrl k][l] n [Invio] Spostamento alla riga n.
[Ctrl k][-] Spostamento alla posizione della modifica precedente.
[Ctrl k][=] Spostamento alla posizione della modifica successiva.

196.4.7   Gestione dei file e conclusione

Joe permette di gestire diversi file contemporaneamente. Per questo, ogni file viene inserito in una finestra differente. Queste finestre possono essere visibili contemporaneamente, dividendosi lo spazio sullo schermo, oppure possono essere sovrapposte semplicemente.

Le operazioni di caricamento e salvataggio riguardano sempre solo la finestra attiva, cioè quella in cui si trova il cursore e che risulta visibile. La finestra che viene creata eredita tutte le sue caratteristiche da quella attiva nel momento della creazione, compreso il file in essa contenuto.

La tabella 196.33 elenca i comandi utili per la gestione di file e finestre.

Tabella 196.33. Comandi per la gestione di file e finestre.

Comando Descrizione
[Ctrl k][e] file Carica il file indicato in una nuova finestra.
[Ctrl k][r] file Inserisce il file indicato nella posizione del cursore.
[Ctrl k][d] file Salva eventualmente confermando o cambiando il nome del file.
[Ctrl k][x] Salva ed elimina la finestra attiva.
[Ctrl c] Termina il lavoro della finestra attiva senza salvare.
[Ctrl k][o] Crea una nuova finestra dividendo in due lo schermo.
[Ctrl k][i] Ingrandisce al massimo la finestra attiva, oppure suddivide lo schermo tra le finestre.
[Ctrl k][n] Passa alla finestra successiva.
[Ctrl k][p] Passa alla finestra precedente.

La figura 196.34 mostra uno schermo diviso in due finestre.

Figura 196.34. Due finestre che si dividono lo spazio dello schermo.

    IW   appuntilinux/esempi/COPYING  Row 1    Col 1   10:37  Ctrl-K H for help

                    GNU GENERAL PUBLIC LICENSE
                       Version 2, June 1991

 Copyright (C) 1989, 1991 Free Software Foundation, Inc.
                          675 Mass Ave, Cambridge, MA 02139, USA
 Everyone is permitted to copy and distribute verbatim copies
 of this license document, but changing it is not allowed.

    IW   Unnamed (Modified)           Row 1    Col 11  10:37  Ctrl-K H for help
Ciao mondo_







.

Vale la pena di tenere a mente quanto segue:

196.4.8   Taglia, copia, incolla e blocchi di testo

Una della caratteristiche più importanti di Joe è quella di poter intervenire attraverso le operazioni consuete di taglia-copia-incolla anche su porzioni verticali di testo.

La segnalazione del testo da tagliare o copiare avviene attraverso le sequenza [Ctrl k][b], per l'inizio, e [Ctrl k][k], per la posizione oltre la fine del blocco. Normalmente, il blocco selezionato risulta evidenziato.

Per tutto il tempo in cui il blocco risulta evidenziato, è possibile incollare attraverso [Ctrl k][c], nella posizione in cui si trova il cursore, tagliare (nel senso di eliminare) attraverso [Ctrl k][y], o spostare con la sequenza [Ctrl k][m]. Il testo evidenziato può anche essere salvato in un file differente, attraverso [Ctrl k][w]

Normalmente, la selezione del testo avviene nel modo tradizionale, verso destra e poi verso il basso, oppure verso sinistra e poi verso l'alto. È possibile attivare la modalità di selezione rettangolare attraverso [Ctrl t][x]. Quando questa modalità è attivata, si dovrebbe notare una lettera X sulla barra di stato, nella parte sinistra.

La possibilità di selezionare un blocco di testo rettangolare (o verticale) fa sì che poi si possa incollare e spostare un blocco del genere, trattando il testo come una tabella.

La tabella 196.35 elenca i comandi utili per la gestione dei blocchi di testo.

Tabella 196.35. Comandi per la gestione dei blocchi di testo.

Comando Descrizione
[Ctrl k][b] Segnala l'inizio di un blocco di testo.
[Ctrl k][k] Segnala la fine di un blocco di testo.
[Ctrl k][c] Incolla un blocco di testo.
[Ctrl k][y] Cancella un blocco di testo.
[Ctrl k][m] Sposta un blocco di testo.
[Ctrl k][w] Salva un blocco di testo in un file.
[Ctrl t][x] Passa alla modalità di selezione rettangolare oppure a quella normale.

196.4.9   Modalità varie e formattazione del testo

Un programma per la gestione di file di testo può richiedere comportamenti differenti a seconda del tipo di file su cui si opera. In particolare può essere importante che il testo vada a capo da solo, oppure può essere preferibile il contrario. Nello stesso modo, si può desiderare che il testo scritto venga inserito in sovrascrittura, oppure nel modo normale.

La tabella 196.36 elenca alcuni comandi utili per la formattazione del testo.

Tabella 196.36. Comandi per la formattazione del testo.

Comando Descrizione
[Ctrl t][w] Suddivide automaticamente le righe, o meno.
[Ctrl k][j] Riformatta il paragrafo in base ai margini stabiliti.
[Ctrl t][l] n [Invio] Definisce il margine sinistro (di n colonne).
[Ctrl t][r] n [Invio] Definisce il margine destro (di n colonne).
[Ctrl t][t] Scambio delle modalità di sovrascrittura e inserimento.

196.4.10   Ricerche e sostituzioni

La ricerca di una stringa, o di un modello, si inizia con la sequenza [Ctrl k][f].

Find (^C to abort):

Dopo l'inserimento della stringa, o del modello, viene richiesto il modo in cui effettuare la ricerca.

(I)gnore (R)eplace (B)ackwards Bloc(K) NNN (^C to abort):

Premendo semplicemente [Invio] si inizia una ricerca in avanti, altrimenti occorre indicare una o più istruzioni, attraverso l'uso di lettere o numeri, in relazione al tipo di azione che si intende compiere:

Comando Descrizione
[b][Invio] inizia una ricerca all'indietro;
[i][Invio] non distingue tra lettere maiuscole e minuscole;
[n][Invio] inserendo un numero si intende raggiungere l'n-esima occorrenza della stringa o del modello di ricerca;
[r][Invio] sostituisce le stringhe trovate.

Quando la ricerca viene fatta con l'opzione r allo scopo di sostituire le stringhe, viene richiesta la stringa da utilizzare nella sostituzione.

Replace with (^C to abort):

Una volta inserita e premuto [Invio] inizia la ricerca; quindi, in presenza di una corrispondenza viene richiesto se si intende sostituire o meno il testo.

Replace (Y)es (N)o (R)est (B)ackup (^C to abort)?
Comando Descrizione
[y] sostituisce il testo;
[n] salta la sostituzione e cerca la prossima occorrenza;
[r] sostituisce tutte le occorrenze a partire da quella appena ritrovata (eventualmente limitandosi al numero indicato quando veniva specificato il tipo di ricerca);
[Ctrl c] interrompe la ricerca.

Joe consente di utilizzare delle espressioni per la ricerca, in modo da definire un modello particolare. In modo simile, è consentito anche l'utilizzo di espressioni per la sostituzione. Queste espressioni ricordano vagamente le espressioni regolari. Per conoscerne l'utilizzo si può consultare la documentazione: joe(1). Vale la pena di rammentare che \\ rappresenta una singola barra obliqua inversa, mentre \n rappresenta il codice di interruzione di riga.

[Ctrl l] consente di ripetere una ricerca.

196.4.11   Completamento e storico

Quando il programma propone un invito a inserire qualche tipo di informazione (si pensi a quando si salva o si carica un file), è possibile utilizzare il tasto [Tab] per tentare di ottenere il completamento del nome. Se il nome non può essere completato, la pressione ulteriore di quel tasto fa apparire l'elenco delle possibilità.

Nello stesso modo, si possono usare i tasti [freccia su] o [freccia giù] per recuperare un'informazione inserita in precedenza nella stessa situazione. Si ottiene cioè lo scorrimento dello storico dei dati inseriti.

196.4.12   Considerazioni finali

Joe è un programma per la gestione dei file di testo piuttosto potente. Molte delle sue caratteristiche non sono state analizzate qui, soprattutto non sono descritte le sue possibilità di configurazione.

Come già suggerito, se si intende utilizzare assiduamente questo programma conviene consultare la sua documentazione originale: joe(1).

196.5   Mcedit

Mcedit (9) è un programma che per la creazione e la modifica di file di testo incorporato all'interno di Midnight Commander. Si tratta di un programma molto semplice da usare, il cui funzionamento ricalca quello di altri programmi simili per Dos.

Mcedit viene descritto nel capitolo 197 assieme a Midnight Commander.

196.5.1   Variabile di ambiente «EDITOR»

Alcuni programmi che si avvalgono di un programma per la creazione e la modifica dei file di testo, utilizzano la variabile di ambiente EDITOR per sapere di quale servirsi. Si può considerare anche la possibilità di impostare o modificare questa variabile per avviare automaticamente il proprio programma preferito; l'esempio seguente mostra l'uso di mcedit:

EDITOR=mcedit[Invio]

export EDITOR[Invio]

L'esempio fa riferimento ai comandi necessari per una shell Bourne o derivata.

196.5.2   Collegamenti alternativi

Se viene impostata la variabile di ambiente EDITOR, l'utente potrebbe fare riferimento al programma predefinito per la creazione e la modifica di file testo semplicemente così:

$EDITOR mio_file.txt[Invio]

In questo caso, si comprende che si vuole modificare o creare il file mio_file.txt.

Quello che manca normalmente a un sistema operativo è la disponibilità di un nome fittizio che avvii un programma di questo tipo, scegliendolo automaticamente, secondo qualche criterio logico. Tanto per fare un esempio, si pensi al fatto che sono disponibili diverse varianti di VI (tanto per citarne due: nVI e Vim) e può essere comodo installarne diverse nello stesso elaboratore. Anche partendo dal presupposto che VI sia l'unico vero programma per scrivere file di testo, si crea il problema di stabilire quale debba essere quello giusto.

Per risolvere questo e altri problemi simili, la distribuzione Debian predispone la directory /etc/alternatives/, all'interno della quale vengono creati e aggiornati automaticamente dei collegamenti simbolici a dei programmi di uso comune. L'aggiornamento di questi collegamenti viene eseguito quando si installa o si disinstalla qualche programma che vi interferisce.

In questo caso, sono importanti i collegamenti descritti nell'elenco seguente:

Nome Riferimento
/etc/alternatives/editor si riferisce al programma predefinito per la creazione e la modifica dei file di testo, per esempio /usr/bin/nvi;
/etc/alternatives/editor.1.gz si riferisce alla pagina di manuale del programma editor, per esempio /usr/share/man/man1/nvi.1.gz;
/etc/alternatives/vi si riferisce al programma effettivo da usare in qualità di VI;
/etc/alternatives/vi.1.gz si riferisce alla pagina di manuale del programma usato al posto di VI.
/etc/alternatives/ex si riferisce al programma effettivo da usare in qualità di ex;
/etc/alternatives/ex.1.gz si riferisce alla pagina di manuale del programma ex effettivo.

196.6   Mined

Mined (10) è un programma per la creazione e la modifica di file di testo predisposto per la gestione di varie codifiche in modo automatico. In particolare, è in grado di riconoscere automaticamente la modalità di funzionamento del terminale e la codifica dei file che vengono aperti; per esempio, se il terminale è configurato per la codifica ISO 8859-1 (Latin 1), si può lavorare con un file UTF-8 in modo trasparente.

mined [opzioni] [file]...

La figura successiva dà un'idea del funzionamento di Mined, in questo caso avviato per modificare il file mined.txt, scritto utilizzando la codifica UTF-8. Si può osservare in particolare nella parte inferiore dello schermo un riepilogo, che mostra la dimensione in caratteri e in byte. Per accedere al menù a tendina è sufficiente premere la combinazione [Ctrl x], dove x è la lettera maiuscola della voce corrispondente (per esempio, [Ctrl f] apre il menù {File}).

Figura 196.44. Aspetto di Mined avviato per modificare il file mined.txt.

 File       Edit       Search     eXtra      Paragraph        "" U8  h E= »j
Mined è un programma per la creazione e la modifica di file di testo«
predisposto per la gestione di varie codifiche in modo automatico. In«
particolare, è in grado di riconoscere automaticamente la modalità di«
funzionamento del terminale e la codifica dei file che vengono aperti;«
per esempio, se il terminale è configurato per la codifica ISO 8859-1«
(Latin 1), si può lavorare con un file UTF-8 in modo trasparente.«
«
«















 Read mined.txt, line 1 of 8 (chars/bytes: 418/423)

Mined è un programma ricco di funzionalità e anche di particolarità, che meritano uno studio approfondito attraverso la sua documentazione: la pagina di manuale mined(1).

196.7   Riferimenti

Appunti di informatica libera 2007.02 --- Copyright © 2000-2007 Daniele Giacomini -- <daniele (ad) swlibero·org>


1) Elvis < 2.0   software libero

2) Elvis ≥ 2.1   software non libero: licenza Artistic

3) Vim   software libero con licenza speciale

4) nVI   software libero

5) Le sigle ~E, ~J, ecc. rappresentano le lettere accentate della codifica utilizzata nei sistemi Dos. Per scrivere un file del genere, occorrono due fasi: una in un ambiente che accetti la codifica Latin 1 e l'altra in Dos.

6) E3   GNU GPL

7) AE   software libero con licenza speciale

8) Joe   GNU GPL

9) GNU Midnight Commander   GNU GPL

10) Mined   GNU GPL


Dovrebbe essere possibile fare riferimento a questa pagina anche con il nome creazione_e_modifica_di_file_di_testo_1.htm

[successivo] [precedente] [inizio] [fine] [indice generale] [indice ridotto] [indice analitico]

Valid ISO-HTML!

CSS validator!