UNIX: introduzione elementare

Editing di file di testo

In questo capitolo descriveremo sinteticamente tre programmi per comporre file di testo. Ulteriori e più approfondite informazioni su questi editor possono essere reperite, come al solito, sulle relative man pages. I primi due editor sono tra i più diffusi in ambiente Unix: vi ed emacs; il terzo è pico, l'editor del programma di posta elettronica pine, che può essere usato anche indipendentemente da quest'ultimo; pico, pur essendo meno diffuso dei primi due e soprattutto molto meno potente, è stato inserito in questa brevissima rassegna perché è uno degli editor più semplici da usare tra i tanti reperibili in ambiente Unix.

La variabile di ambiente EDITOR contiene il nome del programma editor di default, che viene invocato automaticamente in determinate circostanze. Se la variabile non esiste (non è stata definita) allora l'editor di default è vi. Per cambiare l'editor di default si deve modificare il valore di questa variabile.

L'editor vi

vi (si pronuncia "vuai") è sicuramente l'editor più diffuso sotto Unix ed anche uno degli editor più potenti in assoluto. Con vi si può fare praticamente tutto, l'unico difetto è che è un po' ostico da utilizzare per chi è alle prime armi ed è completamente fuori standard rispetto ad altri editor (o meglio, vista la sua importanza, vi costituisce uno standard a sé).

Il programma è caratterizzato da due modalità operative differenti: la modalità "comando" e la modalità "inserimento". Nella prima è possibile impostare i comandi generali per la gestione dell'intero file (in ambiente vi il file caricato si chiama buffer), mentre nella seconda è possibile scrivere e modificare il testo.

Appena caricato vi ci troviamo in modalità comando, in cui possiamo muoverci all'interno del buffer utilizzando i tasti di spostamento del cursore (quelli con le "frecce") o i tasti   h   per spostare il cursore verso sinistra,   j   per spostarlo in basso,   k   per muoverlo verso l'alto e   l   per muoverlo a destra.

Dalla modalità comando il tasto   i   ci permette di passare alla modalità inserimento. Per tornare in modalità comando si deve battere il tasto   Esc   (che su alcuni sistemi è sostituito dalla sequenza   Ctrl-[   ). Il programma non visualizza nessuna indicazione sulla modalità attiva, quindi si deve porre una certa attenzione quando si commuta da una modalità all'altra.

Entrati in modalità inserimento possiamo digitare il testo da inserire, proprio come su qualsiasi altro programma di videoscrittura. Ogni modifica, cancellazione o spostamento, avviene però sul singolo carattere: per operare su interi blocchi di testo ci si deve portare in modalità comando, dove si può, ad esempio, cancellare una intera linea del buffer battendo due volte il tasto   d   , oppure il singolo carattere sotto al cursore, battendo   x   . Per tornare in modalità inserimento, invece del tasto   i   che ci permette di inserire il testo a partire dalla posizione attuale del cursore (insert), possiamo battere   a   (add) che ci permette di aggiungere il testo alla fine della linea su cui si trova il cursore.

La modalità comando mette a disposizione una vasta gamma di istruzioni, costituite da una o due lettere, con cui è possibile operare anche sull'intero buffer. Per utilizzarle si deve battere   :   (due punti) e poi digitare il comando. Vediamone alcuni:

co
(copy) Per copiare dopo la riga n3 il testo che va dalla riga n1 alla riga n2 si deve digitare il comando ":n1,n2con3";
mo
(move) Per spostare dopo la riga n3 il testo che va dalla riga n1 alla riga n2 si deve digitare il comando ":n1,n2mon3";
d
(delete) Per cancellare il testo dalla riga n1 alla riga n2 si digiti il comando ":n1,n2d";
r
(read) Per inserire il contenuto del file nome dopo la riga n, si digiti il comando ":n r nome";
w
(write) Per salvare sul file nome il testo dalla riga n1 alla riga n2, si deve digitare il comando ":n1,n2 w nome"; per salvare l'intero file si digiti semplicemente ":w", oppure ":w nome";
q
(quit) Per uscire dal programma si digiti ":q"; per uscire senza salvare su file le modifiche apportate al testo si digiti ":q!", mentre per uscire e salvare il testo su file si deve dare il comando ":wq" oppure si può battere due volte il tasto   Z   (maiuscolo).

Per spostarsi direttamente su una certa linea all'interno del testo si può digitare ":n", dove n è il numero di riga; per andare alla fine del file si può battere più semplicemente   G   .

Come in ogni editor che si rispetti, anche in vi è possibile cercare una certa stringa di caratteri all'interno del buffer: dalla modalità comando basta battere   /   (slash) seguito dalla stringa da cercare (o da una espressione regolare che descrive la stringa che stiamo cercando); una volta trovata la prima occorrenza della stringa, per cercarne un'altra occorrenza basterà battere nuovamente   /   , senza specificare nessuna stringa; si può anche battere il tasto   n   (next) per trovare la successiva occorrenza, oppure   N   per trovare l'occorrenza precedente.

Per utilizzare i comandi di vi è estremamente utile poter identificare i numeri di linea del testo inserito; per questo è opportuno, appena avviato il programma, dare il comando ":set number" che attiva la numerazione automatica delle linee. Per far sì che vi abiliti automaticamente questa funzione, si deve inserire il comando "set number" nel file ".exrc" che contiene i comandi che devono essere eseguiti da vi all'inizio della sessione di lavoro; come tutti i file di configurazione, anche questo comincia con un punto e deve essere inserito nella nostra home directory. A titolo di esempio riporto il contenuto del mio file ".exrc":

set autoindent
set tabstop=2 shiftwidth=2
set number
set wm=10

Per aprire un file in modalità di sola lettura, senza correre il rischio di modificarlo inavvertitamente, si può utilizzare l'opzione "-r" o il comando view.

vi ha un gran numero di comandi, alcuni dei quali (pochissimi, a dire il vero) sono stati descritti in queste pagine; per avere un riferimento più dettagliato sulle varie possibilità offerte dal programma è opportuno riferirsi alla documentazione del proprio sistema.

Emacs

L'editor emacs è forse più sofisticato, ma altrettanto complesso e potente di vi. Supporta un linguaggio per la compilazione di macro molto simile al Lisp, un linguaggio funzionale che opera su liste. Questo linguaggio di macro è potente al punto che qualcuno si è anche divertito a sviluppare dei veri programmi (ed anche dei videogiochi) che girano all'interno dell'editor emacs!

Come struttura il programma si avvicina maggiormente agli editor tradizionali, in questo caso non c'è la doppia modalità inserimento/comandi, ma tutto può essere fatto in un unico ambiente e le sequenze di tasti che non devono essere inserite nel testo, perché servono a dare dei comandi al programma, sono tutte composte premendo   Ctrl   insieme ad altri tasti.

Una caratteristica importante di emacs è il fatto di poter operare contemporaneamente su più file (che anche in questo caso vengono chiamati buffer).

Esiste anche una versione grafica di emacs, denominata xemacs, che permette di lavorare in tutta comodità su un terminale grafico X11, utilizzando per i comandi, invece delle combinazioni di tasti, i consueti menù a tendina selezionabili con il mouse.

Spesso emacs è utilizzato proprio in questa modalità grafica guidata dai menù, che quindi non richiede ulteriori spiegazioni; ci limiteremo allora a descrivere i principali comandi che devono essere impartiti da tastiera nel caso si utilizzi il programma su un terminale alfanumerico. Generalmente si utilizzano i caratteri di spostamento del cursore per muoversi all'interno del buffer ed il tasto   backspace   per effettuare le cancellazioni, tuttavia non tutti i terminali prevedono l'uso di questi tasti; in tal caso è bene riferirsi al seguente elenco:

  Ctrl-V  
avanti di una schermata;
  Ctrl-v  
indietro di una schermata;
  Ctrl-p  
indietro di una riga (previous);
  Ctrl-n  
avanti di una riga (next);
  Ctrl-b  
indietro (a sinistra) di un carattere (back);
  Ctrl-f  
avanti (a destra) di un carattere (forward).

Per la gestione dei file si deve fare riferimento ai seguenti comandi:

  Ctrl-x     Ctrl-f   nomefile
Carica nel buffer il file specificato;
  Ctrl-x     Ctrl-s  
Salva su file il buffer corrente;
  Ctrl-x     Ctrl-c  
Termina l'esecuzione del programma; prima di uscire chiede se si desidera salvare su file eventuali buffer modificati, ma non ancora salvati.

Ogni volta che si usa il comando   Ctrl-x     Ctrl-f   per aprire un nuovo file, lo si carica nel buffer, ma non si eliminano i buffer precedentemente caricati: semplicemente avremo più buffer aperti e distinti, ognuno contenente il testo di un file. Si può passare da un buffer all'altro utilizzando le seguenti combinazioni di tasti che gestiscono le "finestre" di emacs:

  Ctrl-x     Ctrl-b  
Elenca i buffer attivi;
  Ctrl-x     Ctrl-f   nomebuffer
Se il buffer è già stato caricato, lo visualizza nella finestra attiva, altrimenti prima carica il file con quel nome, lo inserisce in un nuovo buffer e lo visualizza nella finestra attiva;
  Ctrl-x     2  
Divide lo schermo a metà creando una seconda finestra;
  Ctrl-x     o  
Se lo schermo visualizza più di una finestra (attivata con   Ctrl-x     2   ) passa da una finestra all'altra (other);
  Ctrl-x     1  
Visualizza sullo schermo solo la finestra attiva (quella in cui si trova il cursore).

Per effettuare delle ricerche sul testo di un buffer si deve battere   Ctrl-s   (search) e poi digitare la stringa di testo da cercare; per ripetere la ricerca della stessa stringa sarà sufficiente battere di nuovo   Ctrl-s  .

Emacs è dotato di un potente sistema di help on-line e di un tutorial, una sorta di breve corso guidato sulle funzioni principali del programma. Per accedere all'help, ed avere istruzioni sull'uso di un certo comando, basta battere   Ctrl-h c   e poi la sequenza di caratteri su cui si vuole un aiuto. Ad esempio:

>>   Ctrl-h     c     Ctrl-p  

C-p runs the command previous-line

Per avere informazioni più complete su una certa sequenza di tasti si può usare il comando   Ctrl-h k   seguito dal comando di cui si vogliono le informazioni. emacs visualizza il testo di help in una finestra separata, quindi per ripristinare la finestra su cui stavamo lavorando, eliminando l'help, dovremo battere   Ctrl-x     1  .

Per eseguire il tutorial si deve battere   Ctrl-h     Ctrl-h     t  . Il tutorial viene visualizzato in una finestra separata e permette anche di sperimentare praticamente numerosi comandi.

Pico

Spenderemo soltanto poche parole per descrivere questo semplice editor che, come abbiamo già detto, viene anche utilizzato dal programma pine come editor per la compilazione dei messaggi di posta elettronica.

Ciò che distingue pico dagli altri due programmi visti in questo capitolo, è sicuramente il fatto che tutti i comandi che è possibile impostare vengono riportati sinteticamente in una specie di menù visualizzato sulle ultime due righe del terminale. Ogni comando viene impostato premendo   Ctrl   insieme ad un altro tasto. A differenza di emacs, pico dispone di un unico buffer e quindi può operare su un unico file alla volta. In ogni caso qualsiasi paragone tra questo programma ed uno degli altri due editor visti in precedenza è del tutto fuori luogo: si tratta di prodotti di classe completamente diversa, potenti e versatili vi ed emacs, estremamente limitato, ma assai intuitivo nell'uso, pico.

Riportiamo una breve spiegazione dei comandi principali:

  Ctrl-c  
visualizza il numero di linea su cui si trova il cursore (current position);
  Ctrl-g  
Visualizza le informazioni di help sul programma (get help);
  Ctrl-j  
"Giustifica", riallineando i margini destro e sinistro delle righe, il paragrafo corrente (justify);
  Ctrl-k  
Cancella la riga su cui si trova il cursore (cut text);
  Ctrl-o  
Salva su file il testo contenuto nel buffer (write out);
  Ctrl-r  
Inserisce il testo di un altro file nella posizione corrente del cursore (read file);
  Ctrl-u  
Annulla l'ultimo comando eseguito (undo);
  Ctrl-w  
Cerca una stringa di caratteri nel testo (where is);
  Ctrl-x  
Esce dal programma (exit).

Per cancellare o spostare un intero blocco di testo è possibile utilizzare il comando di "selezione estesa": ci si posiziona all'inizio del testo da selezionare e si batte   Ctrl-^    ; muovendosi poi con il cursore, si estende la selezione: il testo marcato viene visualizzato in reverse. A questo punto è possibile tagliare l'intera selezione con il comando   Ctrl-k   e poi eventualmente incollarlo (con   Ctrl-u   ) nella nuova posizione del cursore.

Pico non offre altre funzionalità avanzate: quindi solo lo stretto indispensabile per scrivere un breve file di testo (come un messaggio di posta elettronica, ad esempio) e poco altro. Se dovessimo avere la necessità di eseguire operazioni più complesse sul nostro file, dovremo rivolgeci alla maggiore potenza (e complessità) di emacs e vi.

Workstation Sun 2-50
Workstation Sun 2-50

Home page

Indice

Introduzione

Organizzazione del sistema

Comandi fondamentali

Editing di file di testo

L'interfaccia grafica X Window

Alcuni strumenti per l'uso della rete Internet

Sintesi dei comandi principali

Elenco alfabetico delle sigle

Bibliografia

HOME

Valid HTML 4.01! Valid CSS!
Author: Marco Liverani - Last modified: Sunday November 20, 2011 - URI: http://www.aquilante.net/unix/4.shtml