Manpages

NOME

joe − Joe’s Own Editor ( l’ Editor di Joe )

SINTASSI

joe [opzioni-globali] [ [opzioni-locali] nomefile ]...

jstar [opzioni-globali] [ [opzioni-locali] nomefile ]...

jmacs [opzioni-globali] [ [opzioni-locali] nomefile ]...

rjoe [opzioni-globali] [ [opzioni-locali] nomefile ]...

jpico [opzioni-globali] [ [opzioni-locali] nomefile ]...

DESCRIZIONE

JOE è un potente editor di testo ASCII orientato allo schermo. Ha un’interfaccia senza modi che è simile a quella di molti editor amichevoli per PC. Gli utenti di WordStar della Micro-Pro o dei linguaggi «Turbo» di Borland dovrebbero sentirsi a casa propria. JOE è un completo editor UNIX orientato allo schermo, comunque, ed ha molte funzionalità per l’editing di programmi e testo.

JOE emula inoltre molti altri editor. JSTAR è una accurata imitazione di WordStar con molte estensioni proprie di «JOE». JPICO è una accurata imitazione dell’editor PICO del sistema di posta «Pine», ma con molte estensioni e miglioramenti. JMACS è una imitazione di GNU-EMACS. RJOE è una versione limitata di JOE che permette di effettuare l’editing solo sui file specificati sulla linea di comando.

Anche se JOE è in realtà cinque editor diversi, ha tuttavia bisogno di un solo eseguibile, ma con cinque nomi differenti. Posponendo «rc» al nome dell’editor si ottiene il nome del file di inizializzazione di JOE che determina le peculiarità di quell’editor.

JOE is free software; you can distribute it and/or modify it under the terms of the GNU General Public License as published by the Free Software Foundation. (JOE è software libero; può essere distribuito e/o modificato secondo i termini della GNU General Public License pubbilicata dalla Free Software Foundation). Non ho in programma di trasformare JOE in un prodotto commerciale o shareware. JOE è disponibile su Internet via FTP anonimo presso ftp.std.com, file: src/editors/joe*.tar.Z.

USO

Per avviare l’editor, digitate joe seguito da zero o più nomi di file che volete sottoporre ad editing. Ogni nome di file può essere preceduto da una impostazione delle opzioni locali (vedere la tabella delle opzioni locali in seguito). È possibile fornire sulla linea di comando altre opzioni, di natura globale, relative all’editor nella sua totalità (vedere la tabella delle opzioni globali in seguito). Se state editando un nuovo file, potete fornirne il nome quando invocate l’editor o all’interno dell’editor stesso quando salvate il nuovo file. È disponibile una sintassi modificata per i nomi dei file per permettervi di effettuare l’editing dell’output di programmi, dello standard input/output o di sezioni di file o device. Vedere la sezione Nomi dei file per i dettagli.

Una volta che ci si trova nell’editor, è possibile digitare testo ed utilizzare speciali sequenze di caratteri di controllo per compiere altre operazioni relative all’editing. Per scoprire quali sono le sequenze di caratteri di controllo, si legga il resto di questa pagina di man o si digiti ^K H per avere aiuto all’interno dell’editor.

Ed ora, alcuni fatti poco conosciuti relativi all’utilizzo del computer:

Il simbolo ^ significa che bisogna premere il tasto Control mentre si preme il tasto riportato in seguito (la stessa cosa che si fa con Shift per le maiuscole). Alcune combinazioni hanno un equivalente su altri tasti, così da non rendere necessaria la pressione del tasto control: ESC è equivalente a ^[, Canc è equivalente a ^?, Backspace è equivalente a ^H, Tab è equivalente a ^I, Invio, Enter o Return sono equivalenti a ^M e Linefeed è equivalente a ^J. Alcune tastiere potrebbero dare problemi con alcune combinazioni di caratteri di controllo. Di solito ^_, ^^ e ^@ possono essere inseriti senza premere shift (si provi a premere ^-, ^6 e ^2). [N.d.T. Ci si riferisce qui alla disposizione dei tasti sulla tastiera USA, dove @ e ^ si ottengono rispettivamente con Shift+2 e Shift+6. Sulla tastiera italiana è possibile ottenere il primo con (al contrario dello shift,la cui omissione è facoltativa, l’AltGr deve essere omesso) ed il secondo con .] Altre tastiere potrebbero riassegnare queste combinazioni ad altri tasti. Si provino: ^., ^, e ^/. ^SPAZIO di solito può essere usato al posto di ^@. ^\ e ^] vengono interpretati da molti programmi di comunicazione, compresi telnet e kermit. Di solito si preme il tasto per due volte per farlo passare oltre il programma di comunicazione.

Dopo aver digitato ^K H, appare la prima finestra di aiuto in cima allo schermo. È possibile continuare ad inserire e modificare il testo mentre la finestra d’aiuto è attiva. Per cambiare argomento, premere ^[, e ^[. (ovvero, ESC , ed ESC . ). Utilizzare ^K H per rimuovere la finestra di aiuto.

È possibile personalizzare la disposizione dei tasti, gli schermi d’aiuto ed un bel po’ di comportamenti predefiniti copiando nella propria home directory il file di inizializzazione di JOE (/etc/joe/joerc sui sistemi Debian) cambiando in .joerc il suo nome. Vedere la sezione joerc in seguito.

Per fare in modo che JOE venga utilizzato come editor predefinito per la posta elettronica e le news, bisognerà impostare le variabili d’ambiente EDITOR e VISUAL nel proprio file di inizializzazione della shell (.cshrc oppure .profile) in modo che facciano riferimento a JOE (joe risiede in /usr/bin/joe sui sistemi Debian).

Potrebbe essere necessario impostare un bel po’ di altri parametri di invocazione, in particolare se lo schermo del proprio terminale non viene aggiornato come si pensa che dovrebbe. Si consulti la sezione Variabili d’ambiente in seguito.

Opzioni della linea di comando.

È possibile specificare le seguenti opzioni globali sulla linea di comando:

-asis

I caratteri con codice superiore a 127 saranno mandati al terminale così come sono, invece di inviare il negativo del carattere corrispondente con codice inferiore a 128. Se ciò non dovesse funzionare, controllare il proprio server del terminale.

-backpath percorso

Se questa opzione viene specificata, le copie di sicurezza (backup) verranno archiviate nella directory specificata invece che nella directory originale di ciascun file.

-baud nnn

Imposta il baud rate che deve essere considerato quando si tratta di fare delle ottimizzazioni per lo schermo del terminale. Joe inserisce dei ritardi per i baud rate inferiori a 19200, il che aggira il buffer del terminale. In questo modo, se vengono digitati dei caratteri durante l’output allo schermo, quest’ultimo viene interrotto. I comandi di scorrimento non verranno utilizzati a 38400 baud. Ciò si rivela utile per gli X-term ed altri terminali di console che non si trovano davvero su una linea seriale.

-beep

Joe emetterà un «bip» quando si verificheranno degli errori nei comandi e quando il cursore attraverserà gli estremi.

-columns nnn

Imposta il numero di colonne nello schermo.

-csmode

Modo a ricerca continuata (continued search mode): una ricerca immediatamente successiva ad un’altra ricerca ripeterà la ricerca precedente anziché chiedere una nuova stringa. Ciò è utile per i comandi ^[S e ^[R e per quando joe imita emacs.

-dopadding

Di solito Joe suppone che ci sia un qualche controllo di flusso tra sé ed il terminale. Se non c’è, questa opzione farà in modo che joe emetta dei ^@ aggiuntivi verso il terminale come specificato dalla voce in termcap. Questi ^@ permettono al terminale di rimettersi al passo dopo che gli sono giunti comandi lunghi.

-exask

Questa opzione fa in modo cke ^KX verifichi il nome del file che sta per scrivere.

-force

Questa opzione garantisce che ci sia un line-feed nell’ultima riga del file che viene salvato.

-help

Se viene specificata questa opzione, la finestra di aiuto sarà attiva all’avvio dell’editor.

-keepup

Di solito l’aggiornamento dei campi delle righe di stato contenenti il numero della colonna ed i prefissi dei tasti di controllo viene ritartdato di un secondo per ridurre il consumo di CPU; con questa opzione, invece, l’aggiornamento ha luogo ogni volta che viene premuto un tasto.

-lightoff

Se viene specificata questa opzione, l’evidenziazione dei blocchi scomparirà dopo ogni comando relativo ai blocchi.

-lines nnn

Imposta il numero di righe dello schermo.

-marking

Il testo tra ^KB ed il cursore viene evidenziato (utilizzare in congiunzione con -lightoff ed un file joerc modificato per avere la selezione dei blocchi stile drop-anchor)

-mid

Se questa opzione è impostata ed il cursore si sposta fuori dalla finestra, la finestra verrà fatta scorrere in modo da avere il cursore al centro. Questa opzione viene forzata su terminali lenti che non hanno comandi di scorrimento.

-nobackups

Con questa opzione non vengono creati file di backup.

-nonotice

Con questa opzione non viene mostrata la nota di copyright all’avvio dell’editor.

-nosta

Questa opzione elimina la riga di stato in cima. È utile quando sullo schermo si vuole vedere solo il proprio testo o se si sta usando un vt52.

-noxon

Tenta di disattivare la gestione di ^S/^Q. Ciò è utile quando joe imita WordStar o EMACS.

-orphan

Quando questa opzione è attiva, i file aggiuntivi sulla linea di comando saranno posti in buffer orfani invece che in finestre aggiuntive. Ciò è utile quando joe imita emacs.

-pg nnn

Specifica il numero di righe da mantenere dopo PagSu/PagGiù (^U/^V). Se viene specificato -1, viene tenuta mezza finestra.

-skiptop nnn

Evita di utilizzare le prime nnn righe dello schermo. Utile quando joe viene utilizzato come editor per BBS.

Ognuna di queste opzioni può essere specificata anche nel file joerc. Inoltre, le opzioni NOXON, BAUD, LINES, COLUMNS e DOPADDING possono essere specificate come variabili d’ambiente.

Impostando la variabile d’ambiente JOETERM è possibile avere la precedenza sulla variabile convenzionale TERM nello specificare il proprio tipo di terminale.

Le seguenti opzioni possono essere specificate prima di ogni nome di file sulla linea di comando.

+nnn

Il cursore parte sulla riga specificata.

-crlf

Joe utilizza CR-LF come sequenza di fine riga invece di LF e basta. Serve per l’editing di file MS−DOS o VMS.

-wordwrap

Joe manda a capo la parola precedente quando si digita oltre il margine destro.

-autoindent

Quando viene premuto Invio in una riga indentata, l’indentazione viene ripetuta nella nuova riga.

-overwrite

I caratteri digitati sovrascrivono quelli esistenti anziché venire inseriti prima di essi.

-lmargin nnn

Imposta il margine sinistro.

-rmargin nnn

Imposta il margine destro.

-tab nnn

Imposta l’ampiezza della tabulazione.

-indentc nnn

Imposta il carattere di indentazione per ^K, e ^K. (32 per SPAZIO, 9 per TAB).

-istep nnn

Imposta il passo di indentazione per ^K, e ^K..

-linums

Viene mostrato il numero di riga prima di ogni linea.

-rdonly

Il file è a sola lettura.

-keymap nome

Utilizza una sezione alternativa del file joerc per l’impostazione delle sequenze di tasti.

Queste opzioni possono anche venire specificate nel file joerc. Possono essere impostate in base all’estensione del file. Di solito i programmi (estensione .c, .h oppure .p) fanno attivare l’indentazione automatica. Con altri file viene attivato l’«a capo automatico», ma i file rc lo fanno disabilitare.

Operazioni relative all´editing

Editing di base
Quando si digitano dei caratteri all’interno dell’editor, di solito vengono inseriti nel file che si sta editando (o accodati al file se il cursore è alla fine del file). Questa è la normale modalità di funzionamento dell’editor. Se si vuole rimpiazzare del testo esistente, è necessario cancellare quest’ultimo prima o dopo aver digitato il nuovo testo. Per cancellare del testo è possibile utilizzare il tasto Backspace: si sposta il cursore giusto dopo il testo che si vuole cancellare e si preme Backspace un po’ di volte.

Si preme il tasto Invio, Enter o Return per inserire una interruzione di riga. Per esempio, se il cursore si trova a metà di una riga e si preme Invio, la riga viene spezzata in due con il cursore che appare all’inizio della seconda riga. Si prema Backspace all’inizio di una riga per eliminare l’interruzione.

Per muoversi all’interno del file si usano i tasti con le frecce. Se la tastiera in uso non ha i tasti con le frecce (o se per qualche motivo non dovessero funzionare), si usino i tasti ^F per spostarsi in avanti (destra), ^B per spostarsi indietro (sinistra), ^P per spostarsi alla riga precedente (su) e ^N per spostarsi alla riga successiva (giù). I tasti con le frecce destra e sinistra spostano avanti e indietro nel testo di un solo carattere alla volta: se ci si trova all’inizio di una riga e si preme la freccia a sinistra, ci si ritroverà alla fine della riga precedente. Le frecce in su e in giù spostano in avanti ed indietro di un numero di caratteri sufficiente per far apparire il cursore nella stessa colonna in cui si trovava nella riga di partenza.

Se si vuole indentare il testo che si sta inserendo, si può usare il tasto TAB. Esso inserisce un particolare carattere di controllo che fa in modo che i caratteri successivi comincino al prossimo stop di tabulazione. Di solito c’è uno stop di tabulazione ogni otto colonne, tuttavia ciò può essere cambiato con il comando ^T D. I programmatori PASCAL e C impostano spesso uno stop di tabulazione ogni quattro colonne.

Se per qualche ragione lo schermo del proprio terminale dovesse «sporcarsi» (ad esempio, se biff annuncia che è arrivata posta), si può fare in modo che l’editor ripristini lo schermo premendo ^R.

Ci sono molti altri tasti per cancellare testo e spostarsi all’interno del file. Ad esempio, si prema ^D per cancellare il carattere su cui si trova il cursore invece di cancellare all’indietro come si fa con Backspace. ^D può inoltre cancellare una interruzione di linea se il cursore si trova a fine riga. Si digiti ^Y per cancellare l’intera riga su cui si trova il cursore o ^J per cancellare dal punto in cui si trova il cursore fino alla fine della riga.

Si preme ^A per spostare il cursore all’inizio della riga su cui si trova. Si preme ^E per spostare il cursore a fine riga. Si preme ^U o ^V per far scorrere il cursore di mezza schermata in su o in giù. Con «Scorrere» si intende che il testo si sposta, mentre il cursore rimane nella stessa posizione relativamente allo schermo. Si preme ^K U oppure ^K V per spostare il cursore all’inizio o alla fine del file. Si consultino gli schermi di aiuto all’interno dell’editor per venire a conoscenza di ulteriori comandi di cancellazione e movimento.

Se si commette un errore, si può premere ^_ per «annullarlo». Sulla maggior parte delle tastiere basta premere ^- per ottenere ^_, ma in alcuni casi potrebbe essere necessario tener premuti sia il tasto Shift sia il tasto Control contemporaneamente. Nel caso si «annulli» troppo, è possibile «rifare» i cambiamenti premendo ^^ (ciò si ottiene con ^6 su molte tastiere). [N.d.T.: Come in precedenza, ^6 è riferito alle tastiere USA. Sulle tastiere italiane è ].

Se mentre si sta lavorando in un punto del file si rivela necessario controllare temporaneamente un altro punto dello stesso file, si può tornare al punto originale premendo ^K -. Questo comando non fa altro che riportare il cursore nell’ultima posizione in cui è stata effettuata una modifica. È possibile scorrere attraverso un archivio storico di posizioni con ^K - e ^K = nello stesso modo in cui è possibile scorrere attraverso l’archivio storico dei cambiamenti con i comandi «annulla» e «rifai».

Quando si è finito di editare il file, si preme ^K X per uscire dall’editor. Verrà chiesto un nome per il file se questo non era già stato specificato.

Quando si edita un file, in realtà si modifica solo una copia del file. Quindi se si decide di scartare i cambiamenti apportati ad un file durante una particolare sessione di editing, si può premere ^C per uscire dall’editor senza salvarli.

Se si edita un file e si salvano i cambiamenti, viene creata nella directory corrente una copia di sicurezza («backup») della versione originale di quel file, con una ~ aggiunta al nome.

A capo automatico e formattazione
Se si supera l’estremità destra dello schermo in un file di sorgenti C o PASCAL, lo schermo scorrerà a destra per seguire il cursore. Se si supera il imite destro dello schermo in un file normale (uno il cui nome non termina in .c, .h o .p), JOE manderà automaticamente a capo l’ultima parola senza che sia necessario premere Invio. Questo comportamento viene indicato con la locuzione «a capo automatico». L’«a capo automatico» può essere attivato o disattivato con il comando ^T W. Il file di inizializzazione di JOE è di solito impostato in modo tale da attivarlo automaticamente per tutti i file che non siano programmi. Si consulti la sezione sul file joerc che si trova più avanti per cambiare questo ed altri comportamenti predefiniti.

Ad eccezione dell’«a capo automatico», JOE non fa nulla per mantenere automaticamente formattati i paragrafi come altri word processor. Se, al contrario, si vuole che un paragrafo venga riformattato, bisogna premere ^K J. Questo comando «riempie» il paragrafo in cui si trova il cursore, cercando di far stare quante più parole possibile in ogni riga. Un paragrafo, in questo caso, è un blocco di testo separato superiormente ed inferiormente da una riga vuota.

È possibile impostare i margini che JOE usa per la formattazione dei paragrafi e per l’«a capo automatico» con i comandi ^T L e ^T R. Se il margine sinistro è impostato ad un valore diverso da 1, quando si comincia a digitare all’inizio di una riga il cursore salterà immediatamente al margine sinistro.

Se si vuole centrare una riga entro i margini, si usi il comando ^K A.

Modo sovrascrittura
Talvolta è seccante dover cancellare ll testo precedente prima di poter inserire quello nuovo. Ciò avviene, ad esempio, quando si sta modificando una tabella e si vuole mantenere la posizione della colonna sul lato destro della tabella stessa. Quando ciò accade, è possibile porre l’editor nel modo sovrascrittura con ^T T. Quando l’editor si trova in questo modo, i caratteri che vengono digitati rimpiazzano i caratteri esistenti così come farebbe una macchina per scrivere ideale. Inoltre, Backspace si limita ad effettuare uno spostamento a sinistra senza cancellare il carattere quando non si trova alla fine o all’inizio di una riga. Il modo sovrascrittura non è il modo naturale di gestire elettronicamente del testo, perciò si dovrebbe tornare al modo inserimento appena possibile ripremendo ^T T.

Se dovete inserire qualcosa mentre ci si trova nel modo sovrascrittura, si prema ^@. Così facendo, si inserirà uno SPAZIO singolo nel testo.

Caratteri di controllo e caratteri meta.
Ogni carattere è rappresentato da un numero. Ad esempio, il numero per ’A’ è 65 ed il numero per ’1’ è 49. I caratteri che vedete di solito hanno numeri nell’intervallo 32 - 126 (questa particolare assegnazione arbitraria di numeri a caratteri e viceversa si chiama set di caratteri ASCII). I numeri da 0 a 255 che non cadono all’interno di questo intervallo di solito non sono mostrati, ma talvolta hanno altri significati speciali. Il numero 10, ad esempio, è utilizzato per le interruzioni di linea. È possibile inserire questi speciali caratteri di controllo che di solito non vengono mostrati premendo prima seguito da un carattere nell’intervallo @ A B C ... X Y Z [ ^ ] \ _ per ottenere i numeri 0 - 31 e ? per ottenere 127. Ad esempio, se si preme ’ J, si inserisce un carattere di interruzione di riga, o se si preme ’ I, si inserisce un carattere di tabulazione (la stessa cosa che fa il tasto TAB). Un carattere di controllo utile da inserire è 12 (’ L), che fa avanzare la maggior parte delle stampanti fino a inizio pagina. JOE mostra questo carattere come una «L» sottolineata. È possibile inserire i caratteri sopra a 127, i caratteri meta premendo prima ^\. In questo modo si somma 128 al carattere (eventualmente di controllo) successivo. JOE mostra i caratteri sopra a 128 in negativo. Alcune lingue [tra cui l’italiano, N.d.T.] che hanno più lettere dell’inglese utilizzano i caratteri meta per il resto dell’alfabeto. Bisogna porre l’editor nel modo ASIS (descritto in seguito) per far arrivare questi caratteri al terminale senza conversioni.

Prompt
Se si preme TAB quando viene richiesto il nome di un file, joe cercherà di completare il più possibile il nome inserito. Se non è stato in grado di completare tutto il nome perché vi sono più completamenti possibili, joe emetterà un «bip». Se si preme nuovamente TAB, joe elencherà i completamenti. È possibile utilizzare i tasti con le frecce per spostarsi in questo menù della directory e premere INVIO o SPAZIO per selezionare un elemento. Se si preme l’iniziale di una delle voci della directory, tale voce verrà selezionata o, se vi sono più voci che cominciano con la stessa lettera, il cursore si sposterà tra queste. Se si seleziona una sottodirectory o .., il nome della directory viene aggiunto in fondo al prompt e nel menù viene caricata la nuova directory. È possibile premere Backspace per tornare alla directory precedente.

La maggior parte dei prompt tiene traccia delle risposte che vengono ricevute. È possibile scorrere attraverso questi archivi storici con le frecce in su ed in giù.

I prompt sono in realtà delle finestre con una riga sola e senza riga di stato, quindi è possibile utilizzare nell’ambito dei prompt qualunque comando di editing che si usa normalmente col testo. L’archivio storico dei prompt, in realtà, è semplicemente una serie di altre righe dello stesso «file del prompt». In questo modo è possibile effettuare delle ricerche all’indietro attraverso l’archivio del prompt con il normale comando ^K F.

Dal momento che i prompt sono finestre, è anche possibile effettuare una commutazione ad un’altra finestra con ^K P e ^K N.

Dove mi trovo?
Premendo ^K SPAZIO JOE riporterà sull’ultima riga dello schermo il numero della riga, il numero della colonna ed il numero del byte a cui ci si trova. Viene mostrato anche il numero associato al carattere su cui si trova il cursore (il suo codice ASCII). È possibile avere sempre il numero di riga e/o colonna visualizzati sulla riga di stato impostando e posizionando le appropriate sequenze di escape nelle stringhe di impostazione della riga di stato.

Operazioni sui file
Si può premere ^K D per salvare il file corrente (magari con un nome diffrerente da quello originale). Dopo che il file è stato salvato, è possibile premere ^K E per editare un file differente.

Se volete salvare solo una parte selezionata del file, si consulti la sezione sui Blocchi in seguito.

Se si vuole includere un altro file in quello che si sta editando, si usi ^K R per inserirlo.

Sospensione temporanea dell’editor
Se si ha la necessità di fermare temporaneamente l’editor per tornare alla shell, si prema ^K Z. Ad esempio, si potrebbe voler interrompere l’editing e rispondere ad un messaggio di posta elettronica o leggere questa pagina man. Si deve digitare fg o exit (verrà specificato quale dei due quando si premerà ^K Z) per tornare all’editor.

Ricerche di testo
Si prema ^K F per far cercare all’editor un frammento di testo (stringa) in avanti ed all’indietro. Verrà richiesto il testo da cercare. Dopo che è stato digitato Invio, verrà chiesto di insereire delle opzioni. È possibile premere semplicemente Invio un’altra volta per far iniziare immediatamente la ricerca in avanti del testo, oppure si possono inserire una o più delle seguenti opzioni:

b

Cerca all’indietro invece che in aventi.

i

Tratta allo stesso modo le lettere minuscole e maiuscole durante la ricerca. Di solito le lettere minuscole e maiuscole vengono considerate differenti.

nnn

(dove nnn è un numero) Se si inserisce un numero, JOE cerca l’ennesima occorrenza del testo. Questo è utile per portarsi a punti specifici in file strutturati in maniera regolare.

r

Rimpiazza il testo. Se si inserisce l’opzione r, verrà richiesto il testo con cui deve venire sostituito quello trovato. Ogni volta che l’editor trova il testo cercato, chiederà se si vuole sostituire il testo trovato con quello specificato. Si digiti: y per sostituire il testo e poi trovare l’occorrenza successiva, n per non far sostituire il testo ma far cercare ugualmente l’occorrenza successiva, r per rimpiazzare tutte le occorrenze rimanenti del testo cercato nel resto del file senza chiedere conferma (compatibilmente con l’opzione nnn di cui si è parlato), oppure ^C per smettere di cercare e sostituire.

Si può premere ^L per ripetere la ricerca precedente.

Espressioni Regolari
È possibile inserire delle speciali sequenze di caratteri come testo per la ricerca:

\*

Vengono trovati zero o più caratteri. Ad esempio, se si fornisce A\*B come testo da cercare, JOE proverà a trovare una A seguita da un numero qualunque di caratteri e poi una B.

\?

Viene trovato esattamente un carattere. Ad esempio, se si fornisce A\?B come testo da cercare, JOE troverà AXB ma non AB o AXXB.

\^ \$

Corrispondono all’inizio ed alla fine di una riga. Ad esempio, se si fornisce \^test\$, allora JOE troverà una riga contenente solo test.

\< \>

Corrispondono all’inizio ed alla fine di una parola. Ad esempio, se si fornisce \<\*is\*\>, allora joe troverà parole intere che contengono la sottostringa is.

\[...]

Si ha corrispondenza con ogni singolo carattere che appare tra le parentesi quadre. Ad esempio, se si inserisce \[Qq]uesto come stringa da cercare, JOE troverà tanto Questo che questo. È possibile inserire intervalli di caratteri entro le parentesi quadre. Ad esempio, \[A-Z] trova qualunque lettera maiuscola. Se il primo carattere tra le parentesi quadre è ^, JOE proverà a trovare ogni carattere non specificato nelle parentesi quadre.

\c

Simile a \*, ma corrisponde ad una espressione bilanciata del linguaggio C. Ad esempio, se si cerca malloc(\c), allora JOE troverà tuttel le chiamate a malloc, anche se ci fosse un ) all’interno delle parentesi.

\+

Corrisponde a zero o più presenze del carattere che segue immediatamente il \+. Ad esempio, se si specifica \[ ]\+\[ ], dove i caratteri tra parentesi quadre sono SPAZIO e TAB, allora JOE troverà gli spazi vuoti.

\\

Corrisponde ad un singolo \.

\n

Trova il carattere speciale di fine riga (end-of-line) o di interruzione di linea (line-break).

È possibile specificare delle sequenze di caratteri anche nella stringa che deve sostituire quella trovata:

\&

Viene sostituito dal testo che ha avuto corrispondenza con la stringa di ricerca. Ad esempio, se la stringa di ricerca era \<\*\>, che trova parole singole, e specificate "\&", joe metterà le parole tra virgolette.

\0 - \9

Vengono rimpiazzati col testo che corrispondevano all’ennesimo \*, \?, \+, \c, \+, oppure \[...] nella stringa di ricerca.

\\

Viene usato se occorre mettere un \ nella nuova stringa.

\n

Si usa se occorre mettere una interruzione di linea nella stringa sostitutiva.

Alcuni esempi:

Si supponga di avere una lista di indirizzi, ognuno su una riga separata, che compincia con «Indirizzo:» e in cui gli elementi sono separati da virgole, in questo modo:

Indirizzo: S. Holmes, 221b Baker St., Londra, Inghilterra

Se si volesse riorganizzare la lista per mettere prima lo stato, poi la città, quindi il nome della persona ed infine l’indirizzo, si potrebbe fare così:

Si digiti ^K F per iniziare la ricerca, e poi:

Indirizzo:\*,\*,\*,\*\$

per avere una corrispondenza con «Indirizzo:», i quattro elementi separati da virgole e la fine della riga. Quando vengono chieste le opzioni, si digita r per sostituire la stringa, quindi:

Indirizzo:\3,\2,\0,\1

Per disporre le informazioni nell’ordine desiderato. Dopo aver premuto invio la ricerca avrà inizio e la riga dell’esempio diventerà:

Indirizzo: Inghilterra, Londra, S. Holmes, 221b Baker St.

Blocchi
Se si vuole spostare, copiare, salvare o cancellare una specifica porzione di testo, si può fare con i blocchi che sono stati evidenziati. Prima di tutto, si sposta il cursore all’inizio della porzione di testo su cui si intende operare, e si preme ^K B. Quindi si sposta il cursore sul carattere immediatamente successivo al termine del testo in questione e si preme ^K K. Il testo tra il ^K B e ^K K dovrebbe venire evidenziato. È ora possibile spostare il cursore altrove nel documento e premere ^K M per spostare lì il testo evidenziato. È possibile premere ^K C per fare una copia del testo evidenziato ed inserirla dove si trova il cursore. ^K Y cancella il testo evidenziato. ^K W scrive il testo evidenziato su un file.

Un comando molto utile è ^K /, che filtra un blocco di testo attraverso un comando unix. Ad esempio, se si seleziona una lista di parole con ^K B e ^K K e si digita ^K / sort, la lista di parole verrà ordinata. Un altro comando unix che si presta ad essere utilizzato con ^K / è tr. Se si scrive ^K / tr a-z A-Z, tutte le lettere nel blocco evidenziato diventeranno maiuscole.

Dopo aver completato alcune operazioni coi blocchi, è possibile lasciare attiva l’evidenziazione se la cosa non dà fastidio (certo, se si digita per sbaglio ^K Y senza accorgersene...). Se la cosa dovesse proprio dare fastidio, comunque, basta premere ^K B ^K K per disattivare l’evidenziazione.

Indentazione di blocchi nei programmi
Il modo «indentazione automatica» viene commutato con il comando ^T I. Il file joerc è normalmente impostato in modo tale da attivare automaticamente l’indentazione automatica con i file il cui nome termina con .p, .c o .h . Quando l’indentazione automatica è attiva e si preme Invio, il cursore verrà posizionato nella stessa colonna in cui nella riga originale si trovava il primo carattere che non sia SPAZIO o TAB.

È possibile utilizzare i comandi ^K , e ^K . per far scorrere un blocco di testo a sinistra o a destra. Se non è impostata alcuna evidenziazione nel momento in cui vengono impartiti questi comandi, verrà selezionato il blocco di programma in cui si trova il cursore e verrà spostato dai ^K , e ^K . successivi. È possibile impostare l’entità degli spostamenti (espressa in numero di colonne) tramite l’opzione ^T.

Finestre
È possibile editare più di un file alla volta o editare due o più punti diversi dello stesso file. Per fare questo, si preme ^K O per dividere lo schermo in due finestre. Si usa ^K P o ^K N per spostare il cursore nella finestra superiore o inferiore. Si usa ^K E per editare un nuovo file in una delle finestre. Una finestra scompare quando si salva il file con ^K X o si abortisce con ^C. Se si abortisce l’editing di un file che è presente in due finestre, scompare una finestra, non il file.

È possibile creare ulteriori finestre premendo ^K O all’interno di una finestra. Se ci sono troppe finestre sullo schermo ma non si desidera eliminarle, si può premere ^K I. In questo modo verrà mostrata solo la finestra in cui si trova il cursore o, se prima c’era già una sola finestra sullo schermo, JOE proverà a far stare tutte le finestre nascoste sullo schermo. Se ci sono più finestre di quante ce ne stiano sullo schermo, si può premere ^K N sulla finestra più in basso o ^K P sulla finestra più in alto per raggiungere.

Se è stato specificato più di un nome di file sulla linea di comando, ogni file verrà messo in una finestra differente.

È possibile cambiare l’altezza delle finestre con i comandi ^K G e ^K T

Macro di tastiera
Le macro permettono di registrare una sequenza di pressioni di tasti e riprodurla premendone solo due. Ciò è utile per automatizzare compiti ripetitivi. Per avviare la registrazione di una macro si preme ^K ] seguito da un numero da 0 a 9. La riga di stato mostrerà (Macro n recording...). Ora bisogna inserire la sequenza di pressioni di tasti che si vuole venga ripetuta. I comandi che vengono impartiti avranno il loro solito effetto. Si prema ^K ] per terminare la registrazione della macro. Si prema ^K seguito dal numero a cui è stata associata la macro per far ripetere per una volta le pressioni dei tasti.

Ad esempio, se si volesse porre «**» davanti ad un certo numero di righe, si potrebbe digitare:

^K [ ^A ** <freccia giù> ^K ]

Così facendo si avvia la registrazione della macro, si sposta il cursore all’inizio della riga, si inserisce «**», si sposta il cursore in giù di una riga e si termina la registrazione. Visto che sono stati inseriti i comandi necessari per posizionare il cursore sulla riga successiva, è possibile utilizzare ripetutamente questa macro senza essere obbligati a spostare a mano il cursore, cosa di cui si dovrebbe sempre tener conto quando si registra una macro.

Se si scopre che una macro che si sta registrando contiene essa stessa un insieme ripetuto di comandi, è possibile registrare una macro dentro alla macro, a patto di utilizzare un numero differente. È inoltre possibile eseguire macro registrate in precedenza all’interno delle nuove macro.

Ripetizione
È possibile utilizzare il comando di ripetizione, ^K \ per ripetere una macro o qualunque altro comando di editing, persino un carattere, per un numero specificato di volte. Si prema ^K \, si specifichi per quante volte il comando deve essere ripetuto e si prema Invio. Il comando successivo di editing che verrà impartito sarà ripetuto tante volte quanto specificato.

Ad esempio, per cancellare le venti righe di testo successive, si digiti:

^K  20<invio>^Y

Modo a rettangoli
Premendo ^T X si fa in modo che ^K B and ^K K selezionino blocchi rettangolari invece di testo continuo. Questo modo è utile per spostare, copiare, cancellare o salvare colonne di testo. È inoltre possibile filtrare colonne di testo con il comando ^K / (ad esempio, si potrebbe voler ordinare una colonna). Viene influenazato anche il comportamento del comando «inserisci file».

Quando il modo a rettangoli è attivo, si rivela utile anche il modo sovrascrittura (^T T). Quando il modo sovrascrittura è selezionato, i rettangoli sostituiranno il testo esistente invece di venire inseriti prima di esso. Anche il comando per la cancellazione dei blocchi (^K Y) riempirà il rettangolo selezionato con spazi e caratteri di tabulazione invece di cancellarlo. Il modo sovrascrittura è particolarmente utile per il comando «filtra blocco» (^K /), dal momento che manterrà l’ampiezza originale della colonna selezionata.

Ricerca di tag
Se si sta editando un programma C di notevoli dimensioni con molti file sorgente, è possibile utilizzare il programma ctags per generare un file tags. Questo file contiene una lista di simboli del programma ed i file e le posizioni in cui sono definiti. Il comando ^K ; può essere utilizzato per cercare un simbolo (funzioni, costanti definite, ecc.), caricare il file in cui è stato definito nella finestra corrente e posizionare il cursore nel punto in cui il simbolo è definito. Il comando ^K ; chiede quale simbolo si sta cercando, ma usa come come simbolo predefinito quello su cui si trova il cursore. Dal momento che ^K ; carica il file in cui c’è la definizione nella finestra corrente, conviene provvedere prima a dividere in due la finestra con ^K O per avere contemporaneamente il file originale ed il file con la definizione.

Finestre di shell
Si prema ^K ’ per eseguire una shell a comandi in una delle finestre di JOE. Quando il cursore si trova in fondo ad una finestra di shell (in caso contrario si usi ^K V), qualunque cosa venga scritta è passata alla shell invece che alla finestra. L’output della shell o dei comandi eseguiti nella shell è accodato alla finestra di shell (il cursore seguirà questo output se si trova in fondo alla finestra di shell). Questo comando è utile per registrare il risultato di comandi di shell, ad esempio l’output di make, il risultato di un grep su un insieme di file alla ricerca di una stringa o listati di directory da sessioni FTP. Oltre ai caratteri digitabili, i tasti ^C, Backspace, Canc, Invio e ^D vengono passati alla shell. Digitate il comando exit della shell per terminare la registrazione dell’output della shell. Se premete ^C in una finestra di shell in un momento in cui il cursore non si trova in fondo alla finestra, la shell viene uccisa.

Variabili d´ambiente

Affinché JOE possa operare come si deve, bisogna che alcune impostazioni di ambiente siano corrette. La velocità della trasmissione dei dati (baud rate) attraverso la connessione tra il computer ed il terminale deve essere impostata in maniera corretta affinché JOE possa aggiornare lo schermo in maniera pulita e permettere che l’aggiornamento sia ritardato da un’eventuale pressione anticipata dei tasti. Si usi il comando stty nnn per questa impostazione. È bene che il valore scelto sia il più vicino possibile alla velocità effettiva di connessione. Ad esempio, se ci si sta connettendo tramite un modem a 14.4k ma il server di terminale a cui si è connessi è collegato al computer a 9600 baud, si imposterà la velocità a 9600 baud. Il baud rate speciale 38400 o extb viene usato per indicare che si ha una connessione molto veloce, come una console memory mapped o un emulatore di terminale sotto X-window. Se non si riesce ad utilizzare stty per impostare la velocità effettiva della connessione (magari a causa di un modem che comunica col computer ad una velocità differente rispetto a quella con cui comunica attraverso la linea telefonica), si può sempre porre in alternativa un valore numerico nella variabile d’ambiente BAUD (si usi setenv BAUD 9600 con csh o BAUD=9600 ; export BAUD con sh).

La variabile d’ambiente TERM deve essere impostata al tipo di terminale che si sta usando. Se le dimensioni (numero di righe/colonne) del proprio terminale sono differenti da quanto riportato nella relativa voce TERMCAP o TERMINFO, è possibile impostarle con il comando stty rows nn cols nn o impostando le variabili d’ambiente LINES (righe) e COLUMNS (colonne).

JOE di solito si aspetta che il controllo di flusso tra il computer ed il terminale usi l’handshaking ^S/^Q (ovvero, se il computer manda troppo velocemente i caratteri al terminale, quest’ultimo provvede ad inviare ^S per bloccare l’output e ^Q per riavviarlo). Se il controllo di flusso usa un handshaking hardware o esterno alla linea di comunicazione, o se il terminale è sufficientemente veloce per stare sempre al passo con l’output del computer e si desidera utilizzare ^S/^Q per dei comandi di editing, è possibile impostare la variabile d’ambiente NOXON affinchè JOE tenti di disabilitare l’handshaking ^S/^Q. Se la connessione tra il computer ed il terminale non utilizza alcun handshaking ed il terminale non è abbastanza veloce per tenere il passo con l’output del computer, si può impostare la variabile d’ambiente DOPADDING per fare in modo che JOE rallenti l’output inserendo caratteri PAD tra le sequenze di aggiornamento dello schermo del terminale.

Nomi dei file

Quando JOE si aspetta il nome di un file, sia sulla linea di comando che nei prompt all’interno dell’editor, è anche possibile digitare:
!comando

Legge o scrive dati da o su un comando della shell. Ad esempio, si usi joe ’!ls’ per ottenere una copia del listato della directory da editare, oppure si dia ^K D !mail jhallen [AT] world.com per spedirmi il file che si sta editando.

>>nomefile

Si utilizzi questo comando per far sì che JOE accodi il testo editato in fondo al file «nomefile».

nomefile,INIZIO,DIMENSIONI

Si utilizzi questo per accedere ad una sezione fissata di un file o di un device. INIZIO e DIMENSIONI possono essere inseriti in decimale (es.: 123), ottale (es.: 0777) o esadecimale (es.: 0xFF). Ad esempio, si usi joe /dev/fd0,508,2 per editare i byte 508 e 509 del primo floppy drive sotto Linux.

-

Si utilizzi questo per prendere l’input dallo standard input o per scrivere l’output sullo standard output. Ad esempio, si può porre joe in una pipe di comandi: quota -v | joe - | mail root, se ci si vuole lamentare che la propria quota è troppo bassa.

Il file joerc

Le opzioni di ^T, le schermate d’aiuto e le associazioni tra tasti e comandi dell’editor sono tutte definite nel file di inizializzazione di JOE. Se si copia questo file (che risiede in /etc/joe/joerc) come $HOME/.joerc, è possibile personalizzare queste impostazioni secondo i propri gusti. La sintassi del file di inizializzazione dovrebbe essere abbastanza ovvia. Sono inoltre presenti ulteriori istruzioni al suo interno.

Ringraziamenti

JOE è stato scritto da Joseph H.Allen. Se avete segnalazioni di bug o domande, mandateli via e-mail a jhallen [AT] world.com. Anche Larry Foard (entropy [AT] world.com) e Gary Gray (ggray [AT] world.com) hanno contribuito alla creazione di JOE.

Modifiche

Modificato per Debian da Christian Linhart <chris [AT] cosy.at>. Queste modifiche riguardano solo il cambiamento di posizione di alcuni file per Debian.