[successivo] [precedente] [inizio] [fine] [indice generale] [parte]


Capitolo 5.   emacs

emacs [parametri] [file ...]

Versioni di Emacs sono state create per tutti i sistemi operativi, tuttavia la più famosa è quella sviluppata dalla GNU.

$ emacs [Invio]

Avvia l'editor e crea un nuovo file. L'utente può subito interagire con l'ambiente e il testo digitato sarà quello che effettivamente verrà memorizzato.

L'utilizzo di caratteri speciali come il tasto [CTRL] (inteso come tasto di Control) o il tasto di [ALT] (in Emacs inteso come meta carattere) combinati in più modi con i caratteri regolari svolgono funzioni di servizio. In un certo senso sono tasti magici.

Con [CTRL-x CTRL-c] si esce dall'editor Emacs. In virtù di questa sintassi potremmo dire: "si pigia su [CTRL], poi su [x] tenendo premuto [CTRL]; successivamente ripetere l'operazione sostituendo [x] con [c]." Una sintassi leggermente diversa [CTRL-x u] fa seguire la pressione di [u] a [x].

Se ci sono aree di lavoro già modificate ma, non ancora memorizzate su memoria di massa Emacs propone una rosa di scelte: y, n, !, q, ., C-r, C-h. In tabella 5.2 una spiegazione approfondita. Per la gestione dei file in Emacs leggere il paragrafo 5.4.

Forme analoghe per scrivere la sintassi dei comandi sono: [C-x u], o [^x u] in questo caso la lettera "C" e il carattere "^" sostituiscono il tasto [CTRL]. In ogni caso si tratta esclusivamente di una rappresentazione simbolica o sintattica che nulla ha a che vedere con la semantica del comando che rimane la medesima.

Il meta carattere viene indicato con la lettera "M" ed è usuale trovare combinazioni tipo [M-v] (scorre di una pagina il testo). Il meta carattere non ha un tasto ben preciso, tuttavia potremmo azzardare che, nella maggior parte delle tastiere, è rappresentato dal tasto [ALT]. Sempre che si stia parlando di un PC; per un calcolatore Mac potrebbe essere il tasto [COMMAND] o il tasto [OPTION]. Se nessuna combinazione sortisce l'effetto desiderato provare a premere e rilasciare il tasto di [ESC] quindi il carattere richiesto.

Tabella 5.1. Uscire dall'editor emacs.

Combinazione Descrizione
[C-x C-s] Salva il testo sul file corrente.
[C-x C-c] Uscita condizionata da emacs.
[C-x C-w] Salva il testo su un altro file.

Tabella 5.2. Uscita condizionata da Emacs.

Combinazione Descrizione
y Memorizza il file specificato.
n Non memorizza il file specificato.
! Memorizza tutti i file incodizionatamente.
q Esci senza memorizzare nessun file.
. Memorizza il file specificato ed esce immediatamente.
C-r Visualizza il file specificato.
C-h Visualizza la finestra di aiuto contestuale.

5.1   Comandi testo

I comandi per muoversi nelle zone del testo sono più di uno. Oltre al canonico utilizzo dei tasti cursore, è conveniente utilizzare alcune semplici combinazioni per raggiungere velocemente tutte le zone del testo.

Per spostarsi velocemente avanti e indietro di una parola le combinazioni sono [M-f] (forward, avanti) e [M-b] (back, indietro). Per sportarsi nella linea successiva premere [C-n], per quella precedente [C-p]. In Emacs queste semplici combinazioni richiamano i comandi interni. Questa caratteristica è indispensabile, eventualmente, per programmare l'editor. Per fare una semplice prova premere [M-x] quindi digitare la parola next-line; osservare il risultato.

Per riprendere l'ultima modifca è possibile digitare [C--] o [C-x u]. Pressioni ripetute riprendono continuamente il testo. Per cancellare un'intera riga dalla posizione del cursore premere [C-x DEL] seguito da [C-k].

Come per i tasti [CTRL] e [ALT] anche altri tasti sono speciali in Emacs. Questi vengono inseriti nel testo con la combinazione [C-q].

Gli altri caratteri elencati verranno trattati più avanti in questa dispensa.

In tabella 5.4 un riassunto dei comandi principale. Cambiando modalità di esecuzione questi comandi possono subire comportamenti diversi o essere estesi con nuove funzionalità.

Per recuperare Emacs da una combinazione di tasti confusa ed imprecisa è necessario premere [C-g] una o più volte fino a quando il cursore non ritorna nella finestra del documento attivo.

Tabella 5.3. Tasti speciali.

Convenzione simbolica Tasto
[C-] [CTRL]
[M-] [META]
[DEL] [DELETE]
[ESC] [ESCAPE]
[LFD] [CTRL-j]
[RET] [INVIO]
[SPC] [SPAZIO]
[TAB] [TAB]

In tabella 5.4 sono elencati i comandi per eliminare caratteri e porzioni di testo.

Tabella 5.4. I comandi per muoversi nell'area di lavoro.

Combinazione Descrizione
[C-v] Scorre il testo una pagina avanti.
[M-v] Scorre il testo una pagina indietro.
[C-x >] Scorre a destra.
[C-x <] Scorre a sinistra.
[C-l] Visualizza la pagina con il cursore in centro.
[M-f] Avanza di una parola.
[M-b] Torna indietro di una parola.
[M-a] Si sposta ad inizio frase.
[C-f] Avanza di un carattere.
[C-b] Torna indietro di un carattere.
[C-n] Avanza di una riga.
[C-p] Torna indietro di una riga.
[C-a] Si sposta ad inizio riga.
[M-<] Sposta il cursore ad inzio del file.
[M->] Sposta il cursore alla fine del file.
[C-o] Inserisce una riga vuota sopra quella corrente.
[C-x C-o] Elimina tutte le righe vuote che seguono eccetto la prima.

Tabella 5.5. I comandi per eliminare caratteri o porzioni di testo.

Combinazione Descrizione
[C-d] Elimina il carattere sopra il cursore.
[DEL] Elimina il carattere sopra il cursore.
[C-k] Elimina l'intera riga a partire dal cursore.
[M-k] Elimina l'intera frase a partire dal cursore.
[C-x DEL] Cancella il testo da inizio riga fino alla posizione del cursore.
[M-DEL] Cancella la parola precedente.
[C-x u] Annulla l'ultimo testo inserito (undo).
[C-q] Inserisce il codice letterale del carattere digitato.

5.2   Taglia e cuci

La possibiltià di cancellare o copiare un'intera area di testo viene effettuata con Emacs in pochi passaggi. Per prima cosa è necessario posizionare il cursore sul primo carattere appartenente all'area, utilizzare il comando [C-SPC] e riempire un'area di testo. L'area di testo potrà essere cancellata oppure copiata e successivamente cucita in un'altra parte del documento.

Per selezionare un'area di testo una volta marcata è sufficiente muovere il cursore avanti o indietro fino alla riga o al carattere desiderato.

Ulteriori macro possono essere aggiunte a seconda delle modalità.

Tabella 5.6. I comandi per il taglia e cuci.

Combinazione Descrizione
[C-SPC] Marca l'inizio dell'area di testo.
[C-w] Elimina l'area di testo selezionata.
[M-w] Copia l'area di testo selezionata.
[C-x C-x] Torna ad inizio dell'area selezionata.
[C-y] Cuce l'area di testo selezionata.
[C-u C-y] Cuce l'area di testo selezionata e porta il cursore a inizio testo.
[M-y] Cambia il testo cucito con quello eliminato precedente.

5.3   Finestre multiple

Una caratteristica di Emacs è la possibilità di gestire più documenti. Questa flessibilità di gestione viene garantita memorizzando in area di memoria separate, chiamate buffer o aree di lavoro, più file dati o documenti. Ognuna di queste zone di memoria contengono un solo file.

La gestione di queste aree viene lasciata a descrizione dell'utente, che può crearle quando ne ha bisogno, sia ad Emacs come comportamento predefinito.

La gestione delle aree di lavoro avviene tramite finestre che visualizzano i dati memorizzati.

Il sistema più facile per crearne una è richiamare l'aiuto contestuale con la combinazione [C-h ?]. Lo schermo viene diviso in due parti uguali, la prima delle quali contiene il file di lavoro, la seconda la finestra di aiuto. Per chiudere questa finestra premere il tasto [q]. La lista completa delle aree immagazzinate viene visualizzata con la combinazione [C-x C-b] in una nuova finestra; ogni area viene caratterizzata dalle altre con un nome, e questo deve essere necessariamente unico, se questo è *scratch*, allora sarà sicuramente vuoto e viene generato ogni qualvolta si avvia emacs senza argomenti. L'area di *scratch* può essere modificata.

Queste aree rimangono nascoste fino a quando l'utente non le visualizza in una finestra; oppure possono condividere lo spazio dello schermo creando più finestre distinte.

Uno stesso file può essere aperto contemporaneamente in due aree diverse e visabili nello stesso schermo; le modifiche di uno si ripercuotono in tempo reale sull'atro(1).

In tabella 5.7 sono elencati i comandi per la gestione delle aree di memoria; in tabella 5.9 sono elencati i comandi per la gestione delle finestre.

Tabella 5.7. Gestione dei buffer.

Combinazione Descrizione
[C-h ?] Apre la finestra di aiuto di Emacs.
[C-x C-b] Visualizza la lista delle aree dati immagazzinate.
[C-x b] Carica un'altra area dati nella finestra attiva.
[C-x 4 b] Carica un'altra area di memoria nella finestra successiva.
[C-x 4 C-o] Carica un'altra area di memoria nella finestra successiva ma non sposta il cursore.
[C-x k] Elimina un'area dati.

Emacs utilizza i tasti speciali per facilitare il completamento delle stringhe.

Tabella 5.8. Tasti per il completamento.

Tasto Descrizione
[TAB] Completa la stringa in modo completo.
[SPC] Completa la stringa fino al termina della parola.
[RET] Completa la stringa in modo completo ed accettala.
[?] Visualizza le possibili alternative.

Questa facile sostituzione viene usata per completare le richieste di inserimento di stringhe: come il nome di un file o di un'area di lavoro da visualizzare.

Ecco un esempio. Combinando [M-x] c'è la possibilità di inserire un comando; supponiamo di voler visualizzare il calendario di Emacs. L'utente, tuttavia, si è dimenticato il nome esatto per questo prova digitando prima sul tasto [c] eppoi digitanto sul tasto di [TAB].

Con sorpresa verranno visualizzati una serie di comandi, tutti con l'iniziale in c: c++-mode, c-add-style, ... e ovviamente calendar.

Digitando invece le prime tre lettere cal, e completando il testo con TAB, la scelta quasi sicuramente sarebbe ricaduta su quella desiderata.

Tabella 5.9. Gestione delle finestre.

Combinazione Descrizione
[C-x o] Si muove nella finestra dati successiva.
[C-x 0] Chiude la finestra dati attiva.
[C-x 1] Chiude tutte le finestre eccetto quella attiva.
[C-x 2] Crea due finestre orizzontali.
[C-x 3] Crea due finestre verticali.
[C-M v] Scorre la finestra successiva in avanti.

5.4   Gestione dei file

L'avvio del programma emacs può essere seguito da una lista generica di file che vengono caricati e memorizzati in diverse aree di lavoro. Con la gestione delle finestre propria di Emacs è facile richiarmarli in momenti differenti.

Come per le finestre la gestione dei file avviene con la combinazione [C-x] iniziale.

Per creare una nuova area di lavoro ci sono, quindi, due sistemi: il primo consiste nel richiamare la combinazione [C-x b], il secondo nel richiamare la combinazione [C-x C-f]. Entrambe scambiano la finestra corrente, tuttavia la seconda carica un file nell'area di lavoro.

Il contenuto di un file viene inserito nell'area di lavoro corrente con la combinazione [C-x i]. La posizione del cursore è il punto esatto di inserimento; il contenuto del file precedente non viene modificato fino a quando non viene salvato su disco.

Il contenuto di un file viene memorizzato su un dispositivo di massa (generalmente il disco fisso) con la combinazione [C-x C-s], oppure con [C-x C-w]: dove è necessario inserire un nome alternativo, se il file già esiste, oppure il nome del file se l'area di lavoro non è mai stata precedentemente memorizzata.

Tabella 5.10. Comandi per lavorare con i file.

Comando Descrizione
[C-x C-f] Carica in una nuova area di lavoro e visualizza nella finestra corrente il file richiesto.
[C-x C-v] Carica nell'area di lavoro corrente il file richiesto.
[C-x C-s] Salva l'area di lavoro nel file corrente.
[C-x C-w] Salva l'area di lavoro in un nuovo file.
[C-x i] Inserisci il contenuto di un file nell'area di lavoro.
[C-x 4 f] Carina in una nuova area di lavoro e visualizza nella finestra successiva il file richiesto.
[C-x 4 r] Come il precedente ma il file è memorizzato in sola lettura.

5.5   Ricerca e sostituzione di stringhe

Con Emacs sono possibili più modi per cercare stringhe in un documento. Ogni singola parola può essere cercata in avanti ([C-s]) oppure all'indietro ([C-r]); cercata l'occorrenza è sufficiente premere il tasto [RET] per terminare l'operazione.

La ricerca semplice è di tipo incrementale: ad ogni pressione di un tasto (che corrisponde ad un carattere della parola da ricercare) Emacs sposta il cursore sopra la prima occorrenza individuata.

Tabella 5.11. Comandi per la ricerca del testo.

Comando Descrizione
[C-s] Cerca una stringa in avanti.
[C-s RET] Cerca una stringa in avanti nella riga corrente (non incrementale).
[C-s RET C-w] Cerca una parola in avanti (non incrementale).
[C-r] Cerca una stringa all'indietro.
[C-r RET] Cerca una stringa all'indietro nella riga corrente (non incrementale).
[C-r RET C-w] Cerca una parola all'indietro (non incrementale).
[C-g] Interrompi la ricerca.

Come per la ricerca, anche la sostituzione di stringhe è agevole con Emacs. La ricerca base è composta dalla pressione dei tasti [M-%]. Emacs chiede la stringa vecchia da sostituire e quella nuova. Ogni passo viene concluso con la pressione del tasto [RET].

Ad ogni azione di sostituzione è possibile rispondere in modi diversi come da tabella 5.13.

Tabella 5.12. Comandi per la sostituzione del testo.

Comando Descrizione
[M-%] Query: trova e sostituisci.

Tabella 5.13. Risposte ad una richiesta di sostituzione.

Comando Descrizione
[?] Visualizza l'aiuto contestuale.
[y] | [SPC] Sostituisci la parola.
[n] | [DEL] Non sostituire la parola.
[q] | [RET] Esci dal comando.
[!] Sostituisci tutte le parole in modo incondizionato.
[.] Sostituisci la parola corretente ed esci dal comando.
[,] Sostituisce la parola senza cercare la prossima occorrenza.
[^] Torna all'occorrenza precedente.
[C-l] Rivisualizza la pagina corrente.
[C-r] Inizia l'edit ricorsivo.
[C-w] Cancella l'occorrenza ed inizia l'edit ricorsivo.
[E] Richiede la stringa di sostituzione.

1) Per osservare i cambiamenti posizionarsi sulla stessa riga


Dovrebbe essere possibile fare riferimento a questa pagina anche con il nome emacs_1.html

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