Capitolo 3. Elaborazione testi: Emacs e Vi

Sommario
3.1. Emacs
3.1.1. Una breve introduzione
3.1.2. I primi passi
3.1.3. La gestione dei buffer
3.1.4. Copia, taglia, incolla, cerca
3.1.5. Uscire da Emacs
3.2. Vi: il capostipite
3.2.1. Modalità inserimento, modalità comandi, modalità ex...
3.2.2. La gestione dei buffer
3.2.3. Elaborazione del testo e comandi di movimento
3.2.4. Taglia, copia, incolla
3.2.5. Uscire da Vi
3.3. Un'ultima parola...

Come scritto nell'introduzione, l'elaborazione di testi [1] è una caratteristica fondamentale per l'uso di un sistema UNIX. I due editor dei quali stiamo per spiegare brevemente le modalità d'uso risultano inizialmente un po' ostici, ma una volta imparate le nozioni di base si rivelano entrambi strumenti molto potenti.

3.1. Emacs

Emacs è probabilmente il più potente programma di elaborazione testi esistente; può veramente fare qualsiasi cosa ed è espandibile all'infinito grazie al suo linguaggio di programmazione incorporato basato sul lisp. Con Emacs potete andare in giro per il web, leggere la vostra posta, prendere parte a gruppi di discussione, fare il caffè, etc... ma quello che sarete in grado di fare dopo aver letto questa sezione sarà semplicemente: avviare Emacs, modificare uno o più file, salvarli e uscire da Emacs. Il che non è un cattivo inizio.

3.1.1. Una breve introduzione

Avviare Emacs è relativamente semplice:
emacs [file] [file...]
Emacs aprirà in un buffer ogni file immesso come argomento, con un massimo di due buffer visibili contemporaneamente; se non specificate alcun file, verrà aperto il buffer *scratch*. Se state usando X avrete a disposizione anche dei menu, ma noi qui ci occuperemo delle operazioni da tastiera.

3.1.2. I primi passi

È il momento di passare alla pratica. Per fare un esempio, apriamo due file: file1 e file2. Se questi due file non esistono, saranno creati non appena scriverete qualcosa al loro interno. Digitate:
$ emacs file1 file2
per ottenere la finestra mostrata in Figura 3-1.

Figura 3-1. Emacs, modifica simultanea di due file

Come potete vedere, sono stati creati due buffer: uno per ciascun file. Ne è visibile anche un terzo, in fondo allo schermo (dove è scritto (New file)): questo è il mini-buffer; non potete andare di vostra iniziativa in questo buffer, dovete essere invitati a farlo da Emacs stesso durante le operazioni interattive. Per cambiare buffer digitate Ctrl+x o. Potete scrivere del testo come in un editor "normale", e cancellarlo con i tasti Canc o Backspace.

Per spostarvi all'interno del documento potete usare i tasti cursore, o anche altre combinazioni di tasti: Ctrl+a per andare all'inizio della riga, Ctrl+e per andare alla fine della riga, Alt+< per andare all'inizio del buffer e Alt+> per andare alla fine del buffer. Esistono molte altre combinazioni, anche per simulare tutti i tasti cursore[2].

Quando volete salvare i cambiamenti effettuati in un file digitate Ctrl+x Ctrl+s, se invece volete salvare il contenuto del buffer in un altro file digitate Ctrl+x Ctrl+w, e Emacs vi chiederà il nome del file in cui salvarlo. Per inserirlo potete aiutarvi con il completamento automatico.

3.1.3. La gestione dei buffer

Se lo desiderate, potete visualizzare sullo schermo un solo buffer. Ci sono due modi per farlo:

  • vi trovate nel buffer che volete nascondere: digitate Ctrl+x 0;

  • vi trovate nel buffer che volete mantenere sullo schermo: digitate Ctrl+x 1.

Esistono poi due modi per richiamare sullo schermo il buffer che volete:

  • digitate Ctrl+x b e scrivete il nome del buffer che desiderate,

  • digitate Ctrl+x Ctrl+b e sarà aperto un nuovo buffer, denominato *Buffer List*; potete muovervi all'interno di esso tramite la combinazione Ctrl+x o, quindi selezionate il buffer desiderato e premete il tasto Invio, oppure digitatene il nome all'interno del mini-buffer. Quando avrete fatto la vostra scelta, il buffer *Buffer List* tornerà sullo sfondo.

Se avete finito di modificare un file e volete togliere di mezzo il relativo buffer, digitate Ctrl+x k; Emacs vi chiederà quale buffer deve essere chiuso. Come opzione predefinita verrà indicato il nome del buffer in cui vi trovate attualmente; se volete eliminare un buffer diverso da quello indicato scrivetene direttamente il nome, oppure premete TAB: in questo caso Emacs aprirà (ancora) un altro buffer denominato *Completions*, contenente la lista delle scelte possibili. Confermate la vostra scelta con il tasto Invio.

Potete anche ripristinare in qualsiasi momento la visualizzazione di due buffer contemporaneamente; per farlo, digitate Ctrl+x 2. Il nuovo buffer aperto sarà inizialmente una copia del buffer attuale (il che vi permette, ad esempio, di modificare un file lungo in più punti contemporaneamente), e potrete poi procedere come già descritto per spostarvi in un altro buffer.

Potete aprire altri file in qualsiasi momento, tramite Ctrl+x Ctrl+f; Emacs vi chiederà il nome del file, e potrete utilizzare nuovamente il completamento automatico.

3.1.4. Copia, taglia, incolla, cerca

Supponiamo di essere nella situazione di Figura 3-2.

Figura 3-2. Emacs, prima di copiare il blocco di testo

Innanzitutto dovete selezionare il testo che volete copiare. In X potete farlo usando il mouse, e l'area selezionata sarà anche evidenziata; ma ora siamo in modo testo :-). In questo caso vogliamo copiare l'intera frase. Prima di tutto dovete posizionare un marcatore per marcare l'inizio dell'area; supponendo che il cursore sia nella posizione mostrata nell'immagine qui sopra, digitate innanzitutto Ctrl+spazio (Control + barra spaziatrice): Emacs mostrerà il messaggio Mark set nel mini-buffer. Quindi spostatevi a inizio riga con Ctrl+a: l'area da copiare o tagliare è rappresentata da tutto il testo compreso tra il marcatore e la posizione attuale del cursore, quindi in questo caso è tutta la riga. Digitate poi Alt+w (per copiare) o Ctrl+w (per tagliare). Nel caso della copia, Emacs vi riporterà temporaneamente alla posizione del marcatore, in modo che possiate vedere l'area selezionata.

Posizionatevi poi sul buffer nel quale volete copiare il testo, e premete Ctrl+y per ottenere quello che potete vedere in Figura 3-3.

Figura 3-3. Emacs, dopo la copia del blocco di testo

In effetti, ciò che avete appena fatto è stato copiare il testo nel "kill ring" di Emacs: questo "kill ring" contiene tutti i blocchi di testo copiati o tagliati da quando Emacs è stato avviato. Qualsiasi blocco, appena copiato o tagliato, viene inserito in cima al kill ring. La combinazione Ctrl+y incolla solo il blocco che si trova in cima: se volete accedere agli altri blocchi premete Ctrl+y e poi Alt+y finché non raggiungete il testo desiderato.

Per cercare del testo, andate nel buffer in cui volete effettuare la ricerca e premete Ctrl+s: Emacs vi chiederà quale stringa deve cercare. Per avviare una ulteriore ricerca per la stessa stringa, sempre nello stesso buffer, premete nuovamente Ctrl+s. Quando Emacs arriva alla fine del buffer e non trova più occorrenze della stringa, potete premere ancora Ctrl+s per far ripartire la ricerca dall'inizio del buffer. Premendo il tasto Invio la ricerca sarà conclusa.

Per effettuare una ricerca con sostituzione, premete Alt+%: Emacs vi chiederà quale stringa deve cercare, con cosa deve sostituirla, e vi chiederà conferma per ogni occorrenza che troverà.

Per finire, una cosa molto utile: Ctrl+x u annulla l'ultima operazione effettuata. Potete annullare un numero di operazioni a vostro piacimento.

3.1.5. Uscire da Emacs

La scorciatoia per farlo è Ctrl+x Ctrl+c. Se non avete salvato le modifiche apportate ai buffer, Emacs vi chiederà se volete farlo ora.

Note

[1]

"Elaborare un testo" significa modificare il contenuto di un file costituito solo da lettere, cifre e segni di punteggiatura; questi file possono essere messaggi di posta elettronica, codice sorgente di programmi, documenti, o file di configurazione.

[2]

Emacs è stato progettato per funzionare su tutti i sistemi possibili, e ancora oggi esistono terminali sprovvisti dei tasti cursore. Questo è ancor più vero per Vi.


Tux on Star from MandrakeSoft Linux è un marchio registrato di Linus Torvalds. Tutti gli altri marchi e copyright appartengono ai rispettivi proprietari.
Se non diversamente specificato, i diritti di tutto il contenuto di queste pagine e di tutte le immagini sono proprietà di MandrakeSoft S.A. e MandrakeSoft Inc. 2002.
http://www.mandrakelinux.com/