Scroll to navigation

JOE() JOE()

NOM

JOE — Joe´s Own Editor (l’éditeur personnel de Joe)

Syntaxe

joe [options_globales] [ [options_locales] fichier] ...
jstar [options_globales] [ [options_locales] fichier] ...
jmacs [options_globales] [ [options_locales] fichier] ...
rjoe [options_globales] [ [options_locales] fichier] ...
jpico [options_globales] [ [options_locales] fichier] ...

Description

JOE est un éditeur puissant orienté écran en mode console. Il possède une interface utilisateur « sans mode » qui ressemble à celle de nombreux éditeurs conviviaux sur PC. Les utilisateurs de Wordstar de Micro-Pro et des langages « Turbo » de Borland se sentiront chez eux. JOE est néanmoins un éditeur complet orienté écran pour Unix et offre de nombreuses fonctionnalités pour l'édition de textes et de programmes.

JOE peut aussi émuler plusieurs autres éditeurs. JSTAR est une fidèle imitation de WordStar avec de nombreuses extensions propres à JOE. JPICO est une fidèle imitation de l’éditeur pico(1) du système de courrier électronique pine(1), mais avec de nombreuses extensions et améliorations. JMACS est une imitation de GNU-EMACS, et RJOE est une version bridée de JOE qui se limite à l’édition des fichiers spécifiés sur la ligne de commande.

Même si JOE se compose en fait de cinq éditeurs différents, il n’a besoin que d’un seul exécutable, ce dernier possédant cinq noms différents. Le nom du fichier d'initialisation de JOE se compose du nom de l’éditeur suffixé par « rc » et détermine ainsi la personnalité de l’éditeur.

JOE est un logiciel libre ; vous pouvez le distribuer et/ou le modifier selon les termes de la GNU General Public License publiée par la Free Software Foundation. JOE est disponible sur l’Internet depuis http://www.sourceforge.net/projects/joe-editor.

UTILISATION

Pour lancer l'éditeur, tapez joe éventuellement suivi d’un ou plusieurs noms de fichiers que vous souhaitez éditer. Chaque nom de fichier peut être précédé d’une option locale (voir le tableau des options locales ci-après). D'autres options, globales quant à elles et qui influent sur l’éditeur dans son ensemble, peuvent aussi être placées sur la ligne de commande (voir le tableau des options globales ci-après). Si vous éditez un nouveau fichier, vous pouvez indiquer le nom du nouveau fichier au lancement de l’éditeur ou au moment de l’enregistrement de ce nouveau fichier. Une syntaxe modifiée pour les noms de fichier permet d’éditer la sortie d’un programme, l’entrée et la sortie standard ou des portions de fichiers ou de fichiers de périphérique. Voir la section NOMS DE FICHIERS ci-après pour plus de détails.

Une fois dans l’éditeur, vous pouvez saisir du texte et utiliser des séquences de caractères de contrôle pour effectuer d’autres opérations d’édition. Pour plus de détails sur ces séquences de caractères de contrôle, lisez la suite de cette page de manuel ou tapez ^K H pour afficher l'aide.

Et maintenant, quelques notions informatiques obscures :

Le caractère ^ signifie qu’il faut maintenir la touche Ctrl enfoncée tout en appuyant sur la touche suivante (de la même manière que la touche Shift pour les capitales). Un certain nombre de séquences de touches de contrôle sont dupliquées par d’autres touches pour éviter de devoir appuyer sur la touche Ctrl : Echap est équivalent à ^[, Suppr à ^?, Retour arrière à ^H, Tab à ^I, Entrée ou Retour à ^M et Saut de ligne à ^J. Certains claviers peuvent poser des problèmes avec certaines touches de contrôle. Les séquences ^_, ^^ et ^@ peuvent habituellement être tapées sans appuyer sur Shift (essayez ^-, ^6 et ^2). D’autres claviers peuvent parfois les réassigner à d’autres touches. Essayez ^., ^, et ^/. ^ESPACE peut habituellement être utilisée à la place de ^@. ^\ et ^] sont interprétées par de nombreux programmes de communication, dont telnet(1) et kermit. Il suffit habituellement de presser deux fois la touche en question pour faire en sorte qu’elle soit transmise au programme de communication.

Sur certains claviers, tenir la touche Alt enfoncée pendant que l’on presse une autre touche est équivalent à taper la touche Echap avant de presser cette autre touche.

Taper ^K H pour faire apparaître la première fenêtre d’aide en haut de l’écran. Il est possible de continuer à saisir et à éditer du texte pendant que la fenêtre d’aide est affichée. Pour accéder aux autres fenêtres d’aide, utiliser Esc , et Esc .. Utiliser ^K H pour fermer la fenêtre d'aide.

Vous pouvez personnaliser la disposition du clavier, les fenêtres d’aide et de nombreux comportements par défaut en modifiant le fichier d’initialisation de JOE (normalement /etc/joe/joerc) après l’avoir copié vers $HOME/.joerc. Voir la section JOERC ci-après.

Pour faire de JOE votre éditeur par défaut pour le courrier électronique et les News, vous devez définir les variables d’environnement EDITOR et VISUAL dans le fichier d’initialisation de votre interpréteur de commande (.cshrc ou .profile) de façon qu’elles fassent référence à JOE (l’emplacement de JOE est en général /usr/bin/joe).

Il existe plusieurs autres options d’invocation obscures qui devront éventuellement être définies, en particulier si l’écran du terminal ne se rafraîchit pas comme vous pensez qu’il devrait le faire. Voir la section VARIABLES D’ENVIRONNEMENT ci-après.


OPTIONS DE LA LIGNE DE COMMANDE

Ces options peuvent aussi être spécifiées dans le fichier joerc. Les options locales peuvent être définies en fonction de l’extension du nom de fichier. Les fichiers de programme (extensions .c, .h ou .p) ont souvent l’indentation automatique activée. Les autres fichiers ont le repli des mots activé, mais les fichiers rc le désactivent.

Une option est activée lorsqu’elle est spécifiée comme ceci :

-wordwrap

Une option est désactivée lorsqu’elle est spécifiée comme ceci :

--wordwrap

Certaines options acceptent des arguments. Ces derniers sont spécifiés comme ceci :

-lmargin 5

Les options globales suivantes peuvent être spécifiées sur la ligne de commande :

–
asis
Les caractères dont les codes ASCII sont supérieurs à 127 seront envoyés tels quels au terminal, au lieu de l’être en tant qu’inverse du caractère correspondant de code ASCII inférieur à 128. Si cela ne fonctionne pas, vérifiez votre serveur de terminal. Cette option est sans effet si l’encodage utilisé est UTF-8.

–
assume_256color
Supposer que l’émulateur de terminal de style ANSI prend en charge 256 couleurs, même si l’entrée de termcap dit le contraire.

–
assume_color
Supposer que l’émulateur de terminal de style ANSI prend en charge la couleur, même si l’entrée de termcap dit le contraire.

–
text_color couleur
Spécifier la couleur du texte.

–
status_color couleur
Spécifier la couleur de la barre d’état.

–
help_color couleur
Spécifier la couleur de l’aide.

–
menu_color couleur
Spécifier la couleur des menus.

–
prompt_color couleur
Spécifier la couleur des invites.

–
msg_color couleur
Spécifier la couleur des messages.

–
autoswap
Échanger automatiquement les séquences de contrôle ^K B et ^K K, si nécessaire, pour marquer un bloc valable lors d’une commande de copie/déplacement de bloc.

–
backpath chemin
Spécifier le chemin du répertoire où tous les fichiers de sauvegarde devront être stockés. Par défaut, cette option n’est pas définie et les fichiers de sauvegarde sont stockés dans le répertoire contenant le fichier à sauvegarder.

–
baud nnn
Spécifier le débit en bauds à des fins d'optimisation de l’écran du terminal (outrepasse la valeur indiquée par stty(1)). JOE insère des délais pour les débits inférieurs à 19200 bauds, ce qui évite la mise en tampon du terminal pour que la pré-frappe (typeahead) puisse interrompre la sortie à l’écran. Les commandes de défilement ne sont pas utilisées pour des débits égaux ou supérieurs à 38400 bauds. Cela est utile pour les terminaux X et autres terminaux en mode console qui ne communiquent pas par une ligne série.

–
beep
Émettre des bips quand une commande d’édition renvoie une erreur, par exemple lorsque le curseur dépasse les limites.

–
break_links
Si cette option est activée, JOE supprime le fichier avant de l’enregistrer afin de briser tout lien physique ou symbolique.

–
break_hardlinks
Si cette option est activée et si le fichier n’est pas un lien symbolique, supprimer le fichier avant de l’enregistrer afin de briser tout lien physique.

–
brpaste
Au démarrage de JOE, envoyer une commande à l’émulateur de terminal qui active le « mode de collage entre crochets » (mais seulement si le terminal semble posséder le jeu de commandes ANSI). Dans ce mode, le texte collé dans la fenêtre est mis entre crochets avec ESC [ 2 0 0 ~ et ESC [ 2 0 1 ~.

–
columns nnn
Spécifier le nombre de colonnes de l’émulateur de terminal (au cas où l’entrée de termcap serait fausse). Cette option n’est pertinente que pour les anciens systèmes qui ne possèdent pas le contrôle d’entrée-sortie (ioctl) « get window size ».

–
csmode
Activer le mode recherche répétitive : les frappes successives de la séquence ^K F répètent la recherche en cours.

–
dopadding
Envoyer des « NULL » de remplissage au terminal (pour les terminaux très anciens).

–
exask
Lorsque cette option est spécifiée, la séquence ^K X invite à saisir un nouveau nom avant de sauvegarder le fichier.

–
floatmouse
Lorsque cette option est spécifiée, les clics de souris peuvent positionner le curseur au-delà de la fin de la ligne.

–
guess_crlf
Lorsque cette option est spécifiée, JOE essaie de déterminer si le format du fichier est MS-DOS ou UNIX.

–
guess_indent
Lorsque cette option est spécifiée, JOE essaie de déterminer le caractère et le pas d’indentation en fonction du contenu du fichier. L’algorithme consiste à trouver le Plus Grand Commun Diviseur (PGCD) des trois indentations les plus courantes trouvées dans le fichier.

–
guess_non_utf8
Cette option active la détection des fichiers non-UTF-8 avec les paramètres régionaux UTF-8.

–
guess_utf8
Cette option active la détection des fichiers UTF-8 avec les paramètres régionaux non-UTF-8.

–
guess_utf16
Cette option active la détection des fichiers UTF-16. Si un fichier UTF-16BE ou UTF-16LE est détecté, il est converti en UTF-8 lors de son chargement, puis reconverti en UTF-16 lors de sa sauvegarde.

–
helpon
Lorsque cette option est spécifiée, JOE démarre avec l’aide en ligne activée.

–
help_is_utf8
Lorsque cette option est spécifiée, le texte de l’aide dans le fichier joerc est supposé être en UTF-8.

–
icase
Lorsque cette option est spécifiée, la recherche est insensible à la casse par défaut.

–
joe_state
Activer la lecture et l’écriture du fichier ~/.joe_state.

–
joexterm
Si xterm(1) a été configuré avec l’option --paste64, il est conseillé de spécifier cette option pour une meilleure prise en charge de la souris.

–
keepup
Lorsque cette option est spécifiée, le numéro de colonne affiché dans la barre d’état est mis à jour constamment ; sinon, il n’est mis à jour qu’une fois par seconde.

–
language langue
Spécifier la langue pour aspell(1).

–
lightoff
Désactiver automatiquement la coloration syntaxique ^K B ^K K après une opération sur un bloc.

–
lines nnn
Spécifier le nombre de lignes de l’émulateur de terminal (au cas où l’entrée de termcap serait fausse). Cette option n’est pertinente que pour les anciens systèmes qui ne possèdent pas le contrôle d’entrée-sortie (ioctl) « get window size ».

–
marking
Activer le mode marquage : le texte entre ^K B et le curseur est sélectionné.

–
menu_above
Placer les menus au-dessus de l’invite au lieu de les placer en dessous.

–
menu_explorer
Spécifier cette option pour rester dans le menu lorsqu’un répertoire est sélectionné (sinon, le répertoire est ajouté au chemin et le curseur retourne à l’invite).

–
menu_jump
Aller dans le menu de sélection de fichier lorsque la séquence Tab Tab est frappée.

–
mid
Lorsque cette option est spécifiée et si le curseur sort de la fenêtre, cette dernière fait l’objet d’un défilement de façon que le curseur se retrouve au centre. Cette option est automatiquement activée dans le cas des terminaux lents qui n’ont pas de commande de défilement.

–
left nn
Cette option permet de définir le nombre de colonnes dont l’écran défile vers la gauche lorsque le curseur sort de l’écran du côté gauche ou quand la commande crawll est exécutée. Si nn est négatif, il correspond à la fraction de l’écran à faire défiler. Par exemple, -2 correspond à un défilement de la moitié de l’écran.

–
right nn
Cette option permet de définir le nombre de colonnes dont l’écran défile vers la droite lorsque le curseur sort de l’écran du côté droit ou quand la commande crawlr est exécutée. Si nn est négatif, il correspond à la fraction de l’écran à faire défiler. Par exemple, -3 correspond à un défilement du tiers de l’écran.

–
mouse
Activer la prise en charge de la souris sous xterm(1).

–
nobackups
Désactiver la sauvegarde des fichiers.

–
nocurdir
Ne pas afficher le préfixe du répertoire actuel dans les invites.

–
noexmsg
Désactiver le message de sortie (« Aucun fichier modifié, aucun enregistrement nécessaire. »)

–
nolinefeeds
Désactiver l’envoi de nouvelles lignes pour préserver l’historique de l’écran dans le tampon de défilement arrière de l’émulateur de terminal (disponible seulement si le mode « notite » est activé).

–
nolocks
Désactiver les verrous de fichier compatibles EMACS.

–
nomodcheck
Désactiver la vérification périodique des modifications de fichier.

–
nonotice
Cette option empêche l’affichage de la notice de copyright au démarrage de l'éditeur.

–
nosta
Cette option supprime la barre d'état située au plus haut. Très utile quand vous ne voulez voir que votre texte à l’écran ou que vous utilisez un vt52.

–
notagsmenu
Désactiver le menu de sélection pour la recherche de symboles avec des résultats multiples.

–
notite
Désactiver les séquences termcap ti et te qui sont habituellement définies pour sauvegarder et restaurer le contenu de l’écran du terminal au lancement et à l’arrêt de JOE.

–
pastehack
Si l’entrée du clavier se présente sous forme de bloc, supposer qu’il s’agit d’un collage à la souris et désactiver l’indentation automatique et le repli des mots.

–
noxon
Désactiver les contrôles de flux ^S et ^Q, permettant d’utiliser ^S et ^Q comme raccourcis clavier de l’éditeur.

–
orphan
Placer les fichiers supplémentaires spécifiés sur la ligne de commande dans des tampons orphelins au lieu de créer des fenêtres pour chacun d’entre eux (les fichiers sont chargés, mais vous devez utiliser les commandes de commutation de tampon pour y accéder).

–
pg nnn
Spécifier le nombre de lignes à garder après PgUp/PgDn. La valeur -1 correspond à la moitié de la fenêtre.

–
regex
Utiliser la syntaxe standard pour les expressions rationnelles au lieu de la syntaxe de JOE (avec laquelle les caractères spéciaux n’ont leur signification que précédés d’une controblique « \ »).

–
restore
Si cette option est spécifiée, la position du curseur est restaurée à la position à laquelle il se trouvait lors de la précédente édition du fichier.

–
rtbutton
Échanger les boutons gauche et droit de la souris.

–
search_prompting
Afficher la chaîne de recherche précédente lors de l’exécution de la commande search (comme avec PICO).

–
skiptop nnn
Ne pas utiliser les nnn premières lignes de l’écran du terminal, tout en préservant leur contenu. Cette option s’avère utile pour les programmes qui font appel à JOE pour délivrer un message à l’utilisateur.

–
square
Activer le mode bloc rectangulaire.

–
transpose
Échanger les lignes et les colonnes dans tous les menus.

–
title
Afficher le contexte (les titres) dans la barre d’état. Cette option affiche dans la barre d’état la première ligne de la fonction dans laquelle se trouve le curseur. Le fichier de syntaxe context.jsf permet d’identifier les lignes qui correspondent à des lignes de titre.

–
type
Sélectionner le type de fichier en outrepassant le type déterminé automatiquement. Les types de fichier sont définis dans le fichier ftyperc.

–
undo_keep nnn
Spécifier le nombre d’enregistrements d’annulation de modification à conserver (0 signifie l’infini).

–
usetabs
Spécifier cette option pour permettre aux opérations sur les blocs rectangulaires d’utiliser des tabulations.

–
wrap
Effectuer les recherches depuis le début du fichier.

Les options locales suivantes peuvent être spécifiées sur la ligne de commande :

–
+nnn
Le curseur est placé sur la ligne spécifiée par nnn.

–
autoindent
Activer le mode d’indentation automatique. Lorsque vous tapez Entrée sur une ligne indentée, l’indentation est identique sur la nouvelle ligne.

–
c_comment
Si cette option est spécifiée, ^G saute les commentaires de style C « /.../ ».

–
cpara caractères
Spécifier la liste des caractères qui peuvent indenter des paragraphes.

–
cnotpara caractères
Spécifier la liste des caractères qui commencent des lignes qui ne sont absolument pas des parties de paragraphes.

–
cpp_comment
Si cette option est spécifiée, ^G saute les commentaires de style C++ « // ... ».

–
crlf
Si cette option est spécifiée, JOE utilise CR-LF comme séquence de fin de ligne au lieu de LF seul pour l’édition de fichiers au format MS-DOS ou VMS.

–
encoding encodage
Spécifier l’encodage du fichier (par exemple utf-8 ou 8859-1).

–
flowed
Si cette option est spécifiée, une espace supplémentaire est ajoutée après chaque ligne d’un paragraphe, sauf le dernier.

–
force
Si cette option est spécifiée, un caractère nouvelle ligne est ajouté en fin de fichier, s’il n’y en a pas déjà un, lors de la sauvegarde du fichier.

–
french
Si cette option est spécifiée, une espace seulement au lieu de deux est insérée après les points lors du reformatage des paragraphes.

–
hex
Activer le mode de vidage hexadécimal.

–
highlight
Activer la coloration syntaxique.

–
highlighter_context
Utiliser un fichier de syntaxe pour identifier les commentaires et les chaînes qui doivent être sautés lors d’une recherche de correspondance à l’aide de ^G.

–
indentc nnn
Spécifier le caractère d’indentation pour un décalage vers la gauche et vers la droite (respectivement ^K , et ^K .). Utilisez 32 pour l’espace et 9 pour la tabulation.

–
indentfirst
Si cette option est spécifiée, la touche home intelligente renvoie tout d’abord au point d’indentation, sinon elle renvoie d’abord à la colonne 1.

–
istep nnn
Spécifier le pas d’indentation.

–
linums
Activer l’affichage des numéros de ligne.

–
lmargin nnn
Spécifier la marge de gauche.

–
lmsg chaîne
Spécifier le message à afficher dans la partie gauche de la barre d’état.

–
overwrite
Activer le mode d’écrasement. Saisir un caractère écrase le caractère existant à la même place au lieu d’insérer le nouveau caractère avant ce dernier.

–
picture
Activer le mode « picture ». Dans ce mode, le curseur peut dépasser la fin des lignes.

–
pound_comment
Si cette option est spécifiée, ^G saute les commentaires du style « # ... ».

–
purify
Corriger l’indentation, si nécessaire, avant un décalage ou un retour arrière intelligent. Par exemple, si l’indentation utilise un mélange d’espaces et de tabulations, et si indentc a pour valeur l’espace, l’indentation sera convertie en espaces avant l’opération de décalage.

–
rdonly
Activer le mode lecture seule.

–
rmargin nnn
Spécifier la marge de droite.

–
rmsg chaîne
Spécifier le message à afficher dans la partie droite de la barre d’état.

–
semi_comment
Si cette option est spécifiée, ^G saute les commentaires de style « ; ... ».

–
single_quoted
Si cette option est spécifiée, ^G saute les chaînes de style « ´...´ ».

–
smartbacks
Activer les retours arrières et tabulations intelligents. Dans ce mode, les retours arrières et les tabulations indentent ou désindentent en fonction des valeurs des options istep et indentc.

–
smarthome
Si cette option est spécifiée, la touche Home amène le curseur en début de ligne puis, si elle est frappée à nouveau, l’amène sur le premier caractère qui n’est pas un blanc.

–
smsg chaîne
Spécifier le format de la commande d’état lorsque le curseur est sur un caractère.

–
spaces
Insérer des espaces lorsque la touche Tab est frappée.

–
syntax syntaxe
Spécifier la syntaxe pour la coloration syntaxique.

–
tab nnn
Spécifier la largeur d’un taquet de tabulation.

–
text_delimiters liste_délimiteurs_de_mot
Spécifier la liste de délimiteurs de mots que ^G parcourra.

Par exemple, « begin=end:if=elif=else=endif » signifie que ^G sautera entre les if, elif, else et endif correspondants.

–
vhdl_comment
Si cette option est spécifiée, ^G saute les commentaires de style « -- ... ».

–
wordwrap
Si cette option est spécifiée, JOE passe le dernier mot à la ligne si vous saisissez un caractère au-delà de la marge de droite.

–
zmsg chaîne
Spécifier le format de la commande d’état lorsque le curseur est en fin de fichier.

–
xmsg chaîne
Spécifier le message affiché au démarrage (en général la notice de copyright).

–
aborthint chaîne
Spécifier la séquence de touches à afficher dans les invites d’abandon (en général ^C).

–
helphint chaîne
Spécifier la séquence de touches à afficher dans les invites d’aide (en général ^K H).

Couleurs et attributs

Il est possible de combiner des attributs et jusqu’à une couleur d’avant-plan et une couleur d’arrière-plan pour créer des arguments à utiliser avec des options de couleur comme text_color. Par exemple bold+bg_green+blue.

–
Attributs : bold, inverse, blink, dim, underline et italic.
–
Couleurs de premier plan : white, cyan, magenta, blue, yellow, green, red ou black.
–
Couleurs d’arrière-plan : bg_white, bg_cyan, bg_magenta, bg_blue, bg_yellow, bg_green, bg_red ou bg_black.

Avec un émulateur de terminal à 16 ou 256 couleurs (export TERM=xterm-16color), ces couleurs plus éclatantes que la normale sont aussi disponibles :

–
Premier plan : WHITE, CYAN, MAGENTA, BLUE, YELLOW, GREEN, RED ou BLACK.
–
Arrière-plan : bg_WHITE, bg_CYAN, bg_MAGENTA, bg_BLUE, bg_YELLOW, bg_GREEN, bg_RED ou bg_BLACK

Avec un émulateur de terminal à 256 couleurs (export TERM=xterm-256color), ces couleurs sont aussi disponibles :

–
fg_RGB et bg_RGB où R, G et B prennent des valeurs entre 0 et 5. Par exemple, fg_500 correspond au rouge éclatant.
–
fg_NN et bg_NN représentent des nuances de gris où l’intensité, NN, va de 0 à 23.

Chaînes de définition de la barre d’état

-lmsg définit la chaîne alignée à gauche et -rmsg la chaîne alignée à droite. Le premier caractère de -rmsg est le caractère de remplissage d’arrière-plan.

-smsg définit la commande d’état (^K Space). -zmsg la définit lorsque le curseur est en fin de fichier. Le dernier caractère de -smsg ou -zmsg est le caractère de remplissage

Les séquences d’échappement suivantes peuvent être utilisées dans ces chaînes :

%t  Heure de 0 à 12
%u  Heure de 0 à 24
%T  O pour le mode écrasement, I pour le mode insertion
%W  W si le repli des mots est activé
%I  A si l’indentation automatique est activée
%X  Indicateur du mode rectangle
%n  Nom du fichier
%m  « (Modified) » si le fichier a été modifié
%*  « * » si le fichier a été modifié
%R  Indicateur lecture seule
%r  Numéro de ligne
%c  Numéro de colonne
%o  Position dans le fichier en octets
%O  Position dans le fichier en octets et en hexadécimal
%a  Code ASCII du caractère sous le curseur
%A  Code ASCII du caractère sous le curseur en hexadécimal
%w  Largeur du caractère sous le curseur
%p  Pourcentage du fichier auquel se trouve le curseur
%l  Nombre de lignes du fichier
%k  Touches préfixe saisies
%S  « *SHELL* » si un interpréteur de commande s’exécute dans la fenêtre
%M  Message d’enregistrement de macro
%y  Syntaxe
%e  Encodage
%x  Contexte (première ligne non indentée en remontant)
%dd jour
%dm mois
%dY année
%Enom%  valeur de la variable d’environnement
%Tnom%  valeur de l’option (ON ou OFF pour les options booléennes)

Il est aussi possible d’ajouter à ces séquences d’échappement :

\i  Inversé
\u  Souligné
\b  Gras
\d  Flouté
\f  Clignotant
\l  Italique

LES BASES DE L’ÉDITION

Lorsque vous saisissez des caractères dans l’éditeur, ils sont normalement insérés dans le fichier en cours d’édition (ou ajoutés si le curseur est en fin de fichier). Il s’agit du mode opératoire normal de l’éditeur. Si vous souhaitez remplacer du texte existant, vous devez supprimer l’ancien texte avant ou après la saisie du texte de remplacement. La touche Retour arrière permet de supprimer du texte : placez le curseur à la droite du texte à supprimer et tapez la touche Retour arrière autant de fois que nécessaire.

Tapez la touche Entrée pour insérer un saut de ligne. Par exemple, si le curseur est au milieu d’une ligne et que vous tapez Entrée, la ligne sera divisée en deux nouvelles lignes, le curseur étant positionné au début de la seconde. Taper la touche Retour arrière au début d’une ligne permet d’éliminer un saut de ligne.

Utilisez les touches fléchées pour vous déplacer dans le fichier. Si votre clavier ne possède pas de touches fléchées (ou si pour une raison ou pour une autre elles ne fonctionnent pas), utilisez ^F pour vous déplacer vers l’avant (vers la droite), ^B pour vous déplacer vers l’arrière (vers la gauche), ^P pour vous déplacer vers la ligne précédente (vers le haut) et ^N pour vous déplacer vers la ligne suivante (vers le bas). Les touches fléchées gauche et droite déplacent le curseur d’un caractère à la fois vers l’arrière et vers l’avant du texte : si le curseur est au début d’une ligne et que vous tapez la touche flèche gauche, le curseur sera déplacé vers la fin de la ligne précédente. Les touches fléchées haut et bas déplacent le curseur vers l’arrière et vers l’avant d’un nombre de caractères suffisant pour qu’il apparaisse à la même colonne que celle où il se trouvait dans la ligne d’origine.

Si vous souhaitez indenter le texte que vous saisissez, vous pouvez utiliser la touche de tabulation. Cette dernière insère un caractère de contrôle spécial qui fait que les caractères qui le suivent sont déplacés vers le prochain taquet de tabulation. Les taquets de tabulation sont normalement espacés de 8 colonnes, mais cette valeur peut être modifiée à l’aide de la commande ^T D. Les programmeurs en PASCAL et en C définissent souvent l’espacement des taquets de tabulation à 4 colonnes.

Si pour une raison ou pour une autre l’écran du terminal est « pollué » (par exemple si vous recevez une notification par courriel en provenance de biff(1)), vous pouvez le rafraîchir en tapant ^R.

De nombreuses autres touches permettent de supprimer du texte ou de se déplacer dans le fichier. Par exemple, vous pouvez utiliser ^D pour supprimer le caractère qui se trouve sous le curseur au lieu de supprimer le caractère précédent avec la touche Retour arrière. ^D permet aussi de supprimer un saut de ligne si le curseur se trouve en fin de ligne. ^Y supprime la ligne entière sur laquelle se trouve le curseur, alors que ^J ne supprime que la partie de la ligne située entre le curseur et la fin de cette dernière.

^A déplace le curseur vers le début de la ligne sur laquelle il se trouve et ^E vers la fin. Tapez ^U ou ^V pour faire défiler l’affichage respectivement vers le haut ou vers le bas d’un demi-écran.
« Faire défiler l’affichage » signifie que le texte se déplace à l’écran, mais que le curseur reste à la même place par rapport à ce dernier. Tapez ^K U ou ^K V pour déplacer le curseur respectivement vers le début ou vers la fin du fichier. Vous trouverez d’autres commandes de suppression et de déplacement dans les écrans d’aide de l’éditeur.

Si vous effectuez une action erronée, vous pouvez la « Défaire » en tapant ^_. Sur la plupart des claviers, il suffit de taper ^- pour obtenir ^_, mais sur certains, vous devez aussi maintenir les touches Maj et Ctrl simultanément enfoncées. Si vous annulez trop d’actions consécutives, vous pouvez les « Refaire » en tapant ^^ (sur la plupart des claviers, il suffit de taper ^6).

Historique de la position du curseur

Si vous êtes en train d’éditer le fichier à une certaine position, et que vous devez vous déplacer temporairement pour consulter ou éditer une autre partie du fichier, vous pouvez ensuite revenir à la position initiale en tapant ^K -. Cette commande vous replace véritablement à la dernière position à laquelle vous étiez en train de modifier le fichier. Vous pouvez vous déplacer dans l’historique des positions à l’aide de ^K - et ^K =, de la même façon que vous vous déplacez dans l’historique des changements avec les commandes « Défaire » et « Refaire ».

Sauvegarder et quitter

Lorsque vous avez terminé l’édition du fichier, tapez ^K X pour quitter l’éditeur. Il vous sera demandé un nom de fichier si vous n’avez pas déjà nommé le fichier que vous étiez en train d’éditer.

Lorsque vous éditez un fichier, vous n’en éditez en fait qu’une copie. Ainsi, si vous décidez de ne pas valider les modifications que vous avez apportées au fichier durant l’édition, vous pouvez taper ^C pour quitter l’éditeur sans les sauvegarder.

Si vous sauvegardez les modifications apportées à un fichier durant son édition, une copie de sauvegarde de ce fichier est créée dans le répertoire actuel, avec un caractère tilde (~) ajouté à la fin du nom, et qui contient la version originelle du fichier.

Opérations sur les fichiers

Vous pouvez taper ^K D pour sauvegarder le fichier en cours d’édition (éventuellement sous un autre nom). Une fois le fichier sauvegardé, vous pouvez taper ^K E pour éditer un autre fichier.

Si vous souhaitez ne sauvegarder qu’une partie du fichier que vous aurez sélectionnée, consultez la section BLOCS ci-après.

Si vous souhaitez inclure un autre fichier dans le fichier que vous êtes en train d’éditer, utilisez ^K R.


Noms de fichier

Partout où JOE attend que vous saisissiez un nom de fichier, sur la ligne de commande ou après une invite dans l’éditeur, vous pouvez aussi taper :

–
!command

pour lire ou écrire des données depuis ou vers une commande de l’interpréteur. Par exemple, utilisez joe ´!ls´ pour obtenir une copie du listing de votre répertoire à éditer, ou depuis l’éditeur, utilisez ^K D !mail jhallen@world.std.com pour m’envoyer le fichier en cours d’édition.

–
>>nom_fichier

Utilisez cette commande pour que JOE ajoute le texte édité à la fin du fichier nom_fichier.

–
nom_fichier,DÉBUT,TAILLE

Utilisez cette commande pour accéder à une section précise d’un fichier ou d’un périphérique. DÉBUT et TAILLE peuvent être spécifiés en décimal (ex. : 123), en octal (ex. : 0777) ou en hexadécimal (ex. : 0xFF). Par exemple, utilisez joe /dev/fd0,508,2 pour éditer les octets 508 et 509 du premier lecteur de disquette sous Linux.

–
-

Utilisez cette commande pour lire les données en entrée sur l’entrée standard ou pour écrire les données en sortie sur la sortie standard. Par exemple, vous pouvez insérer JOE dans un pipeline : quota -v | joe | mail root, pour vous plaindre de ne pas avoir assez de quota.

Utiliser JOE dans un script d’interpréteur

Par le passé, JOE utilisait /dev/tty pour accéder au terminal. Cela causait un problème à cause des tueurs de sessions inactives (ces derniers tuaient JOE, car le périphérique tty réel n’était pas sollicité pendant un long moment) ; c’est pourquoi JOE n’utilise maintenant /dev/tty que si vous devez lui transmettre un fichier par un pipeline, comme dans :

echo "Salut" | joe

Si vous voulez utiliser JOE dans un script d’interpréteur dont l’entrée et la sortie standards sont redirigées, et si vous n’avez pas besoin de lui transmettre de données par pipeline, il vous suffit de rediriger l’entrée et la sortie standards de JOE vers /dev/tty :

joe nom_fichier  </dev/tty >/dev/tty

Passage des mots à la ligne et formatage

Si vous tapez au-delà du côté droit de l’écran dans un fichier en langage C ou PASCAL, l’écran va défiler vers la droite pour suivre le curseur. Si vous tapez au-delà du côté droit de l’écran dans un fichier normal (dont le nom ne se termine pas par .c, .h ou .p), JOE va automatiquement faire passer à la ligne le dernier mot, de sorte que vous n’aurez pas à taper Entrée. Cette fonctionnalité a pour nom « mode de passage automatique des mots à la ligne ». Elle peut être désactivée à l’aide de la commande ^T W. En général, le fichier d’initialisation de JOE est configuré de façon que ce mode soit automatiquement activé pour tous les fichiers autres que les fichiers de code de programme. Voir la section à propos du fichier joerc ci-après pour modifier cela et d’autres comportements par défaut.

Mis à part le mode de passage automatique des mots à la ligne, JOE ne conserve pas automatiquement le formatage des paragraphes comme le font certains logiciels de traitement de texte. Si vous voulez qu’un paragraphe soit reformaté, tapez ^K J. Cette commande « remplit » le paragraphe dans lequel se trouve le curseur en plaçant autant de mots que possible dans une ligne. Dans ce cas, un paragraphe est un bloc de texte délimité au-dessus et en dessous par une ligne vide.

Les marges qu’utilise JOE pour le formatage des paragraphes et le passage des mots à la ligne peuvent être définies à l’aide des commandes ^T L et ^T R. Si la marge de gauche est définie à une valeur différente de 1, le curseur se positionne immédiatement au niveau de cette marge lorsque vous commencez à taper au début d’une ligne.

De nombreuses options permettent de contrôler le formatage des paragraphes et le passage des mots à la ligne :

–
L’option cpara fournit une liste de caractères qui peuvent indenter un paragraphe. Par exemple, dans un courriel, les citations sont indiquées par > en début de ligne ; ce caractère devrait donc se trouver dans la liste de l’option cpara.
–
L’option cnotpara fournit une liste de caractères qui indiquent, s’ils correspondent au premier caractère non blanc d’une ligne, que cette dernière ne doit pas être considérée comme partie d’un paragraphe pour le formatage. Par exemple, les lignes commençant par « . » dans nroff(1) ne peuvent pas être des lignes de paragraphe.
–
L’indentation automatique affecte le formatage. Si elle est désactivée, seule la première ligne est indentée. Si elle est activée, c’est l’ensemble du paragraphe qui est indenté.
–
L’option french détermine le nombre d’espaces à insérer après un point.
–
Quand l’option flowed est activée, une espace est insérée après toutes les lignes d’un paragraphe, sauf la dernière. Cela indique, dans certains programmes, que ces lignes forment un seul paragraphe.
–
Quand l’option overtype est activée, le passage automatique des mots à la ligne n’insère pas de ligne.

Centrage

Si vous souhaitez centrer une ligne d’une marge à l’autre, utilisez la commande ^K A.

Vérificateur orthographique

Tapez Esc N pour vérifier l’orthographe du mot sur lequel se trouve le curseur en utilisant le programme aspell(1) (ou ispell(1) en modifiant le fichier joerc). Tapez Esc L pour vérifier le bloc sélectionné, ou la totalité du fichier si aucun bloc n’est sélectionné.

JOE transmet la langue et l’encodage des caractères au vérificateur orthographique. Pour modifier la langue, tapez ^T V. Par exemple, utilisez « en_US » pour l’anglais.

Mode d’écrasement

Il est parfois pénible de devoir supprimer le texte à remplacer avant ou après l’insertion du nouveau texte. Cela se produit par exemple lorsque vous modifiez une table et que vous voulez maintenir la position du côté droit de la table à la même colonne.
Lorsque cela se produit, vous pouvez placer l’éditeur en mode écrasement à l’aide de ^T T.
Lorsque l’éditeur est dans ce mode, les caractères que vous tapez remplacent les caractères existants, comme le ferait une machine à écrire idéalisée. En outre, lorsque le curseur n’est pas en début ou en fin de ligne, la frappe de la touche Retour arrière provoque un simple déplacement vers la gauche sans effacer le caractère précédent. D’un point de vue électronique, le mode écrasement ne correspond pas à une méthode naturelle de traitement du texte ; il est donc conseillé de repasser en mode insertion aussi tôt que possible en tapant ^T T à nouveau.

Si vous voulez insérer un caractère en mode écrasement, tapez ^@. Cela a pour effet d’insérer une espace dans le texte.

Métacaractères et caractères de contrôle

Chaque caractère est représenté par un nombre. Par exemple, le nombre représentant « A » est 65 et celui représentant « 1 » est 49. Tous les caractères normalement affichables possèdent des numéros de 32 à 126 (cette association arbitraire entre caractères et nombres constitue le jeu de caractères ASCII). Les caractères dont le numéro se situe en dehors de cet intervalle et entre 0 et 255 ne sont habituellement pas affichables, mais ils possèdent parfois une signification spéciale. Le caractère de numéro 10, par exemple, est utilisé pour les sauts de ligne. Il est possible de taper ces caractères de contrôle spéciaux non affichables en tapant tout d’abord ^Q, suivi d’un caractère parmi @ A B C ... X Y Z [ ^ ] \ _ pour obtenir les caractères de numéro entre 0 et 31, ou de ? pour obtenir le caractère de numéro 127. Par exemple, si vous tapez ^Q J, vous insérez un saut de ligne, ou si vous tapez ^Q I, vous insérez une tabulation (ce qui provoque le même effet que taper la touche Tab). 12 (^Q L) est le numéro d’un caractère particulièrement utile car ce dernier fait que la plupart des imprimantes avancent vers le début de la page suivante. Vous remarquerez que JOE affiche ce caractère sous la forme d’un « L » souligné. Pour taper les caractères de numéro supérieur à 127 (les métacaractères), tapez tout d’abord ^\, ce qui a pour effet d’ajouter 128 au numéro du caractère (éventuellement de contrôle) tapé ensuite. JOE affiche les caractères de numéro supérieur à 128 en vidéo inverse. Certaines langues étrangères, qui comportent plus de lettres que l’anglais, utilisent les métacaractères pour le reste de leur alphabet. Vous devez placer l’éditeur en mode asis pour les transmettre au terminal sans les interpréter.

Remarque : JOE passe normalement tous les caractères sur 8 bits au terminal, à moins que les paramètres régionaux n’aient été définis à C ou POSIX, auquel cas c’est le drapeau asis qui déterminera si les métacaractères doivent être représentés en vidéo inverse ou transmis directement au terminal.

Remarque : dans les versions précédentes de JOE, vous deviez utiliser Esc ´ pour taper les caractères de contrôle.

JEUX DE CARACTÈRES ET UTF-8

JOE prend nativement en charge deux classes de jeu de caractères : UTF-8 et les jeux de caractères codés sur un octet (comme ISO-8859-1). Avec ces jeux de caractères, le fichier est chargé tel quel en mémoire, et est conservé intégralement lors de l’enregistrement, même s’il contient des erreurs de codage en UTF-8.

Il ne prend actuellement pas en charge nativement d’autres classes majeures comme UTF-16 ou GB2312. Il y a d’autres restrictions : les jeux de caractères doivent utiliser LF (0x0A) ou CR-LF (0x0D - 0x0A) comme terminateur de ligne, l’espace doit avoir pour numéro 0x20 et la tabulation 0x09. En gros, les fichiers texte doivent être compatibles avec UNIX ou MS-DOS.

Cela signifie qu’EBCDIC ne fonctionnera pas correctement (mais vous devrez tout de même gérer les lignes de longueur fixe), et les jeux de caractères qui utilisent CR comme terminateur de ligne (MAC) ne fonctionneront pas.

JOE prend maintenant en charge UTF-16 (gros-boutiste et petit-boutiste). Pour ce faire, il convertit le fichier de UTF-16 à UTF-8 au chargement et le reconvertit à UTF-16 à l’enregistrement.

Le terminal et le fichier peuvent posséder des encodages différents. JOE prend en charge la conversion entre les deux. Actuellement, un des deux doit être UTF-8 pour que la conversion fonctionne.

Le jeu de caractères du terminal et le jeu de caractères par défaut présumé du fichier sont déterminés par la variable d’environnement LC_ALL (si elle n’est pas définie, LC_CTYPE et LANG sont aussi consultées).

Par exemple, si LC_ALL est définie à :

de_DE

le jeu de caractères sera ISO-8859-1.

Si LC_ALL est définie à :

de_DE.UTF-8

le jeu de caractères sera UTF-8.

Tapez ^T E pour changer l’encodage du fichier, puis Tab Tab à l’invite pour obtenir une liste des encodages disponibles. De nombreux jeux de caractères sont intégrés, mais vous pouvez aussi en installer d’autres dans les répertoires ~/.joe/charmaps et /usr/share/joe/charmaps.

Parcourez les fichiers du répertoire /usr/share/i18n/charmaps pour avoir des exemples de jeu de caractères. Seuls les jeux de caractères orientés octet fonctionneront. En outre, les fichiers ne doivent pas être compressés au format gzip (tous les fichiers de /usr/share/i18n/charmaps étaient compressés sur mon ordinateur). L’analyseur étant très limité, le fichier doit avoir pratiquement le même format que le fichier d’exemple de /usr/share/joe/charmaps.

Vous pouvez taper ^K Space pour afficher le jeu de caractères actuel.

Vous pouvez taper ^Q x pour entrer un caractère Unicode si l’encodage du fichier est UTF-8.

Invites

La plupart des invites enregistrent un historique des réponses que vous leur donnez. Les touches flèche haut et flèche bas permettent de parcourir cet historique.

Les invites sont en fait des fenêtres à une seule ligne et sans barre d’état ; vous pouvez donc y utiliser toute commande d’édition que vous utiliseriez normalement pour le texte. L’historique de l’invite ne comporte en fait que d’autres lignes du même « fichier d’invite ». Si vous le souhaitez, vous pouvez donc rechercher en arrière dans l’historique du prompt à l’aide de la commande ^K F.

Comme les invites sont des fenêtres, vous pouvez donc aussi les quitter avec les commandes ^K P et ^K N.

Complètement et menus de sélection

Vous pouvez taper Tab dans toute invite pour demander à JOE de compléter le mot que vous êtes en train de saisir. Si JOE émet un bip, soit il y a trop de complètements possibles, soit il n’y en a aucun. Comme avec l’interpréteur de commande bash(1), tapez Tab deux fois pour afficher une liste de toutes les possibilités. Cette liste est en fait un menu, mais par défaut, le curseur ne se déplace pas en son sein, car il est en général plus simple de saisir votre sélection. Vous pouvez tout de même entrer dans la fenêtre du menu en tapant ^K P (déplacement vers la fenêtre précédente) et utiliser les touches fléchées et la touche Entrée pour votre sélection. Dans un menu, vous pouvez aussi taper la première lettre d’un des items pour positionner le curseur directement sur ce dernier. Le menu d'options ^T fonctionne de la même manière.

Si le menu n’entre pas dans la fenêtre, vous pouvez utiliser les touches Page haut et Page bas pour le faire défiler (même si vous n’êtes pas positionné à l’intérieur).

Le complètement à l’aide de la touche Tab fonctionne aussi dans les invites de recherche et remplacement. Dans ce cas, JOE essaie de compléter le mot en fonction du contenu du tampon. Si vous voulez rechercher le caractère Tab lui-même, vous pouvez le taper avec ^Q Tab.

Vous pouvez aussi taper Echap Entrée dans une fenêtre de texte pour demander à JOE de compléter le mot que vous êtes en train de saisir. Comme dans l’invite de recherche, JOE essaie de compléter le mot en fonction du contenu du tampon. Il affiche un menu des différentes possibilités si vous tapez Echap Entrée deux fois.

OÙ SUIS-JE ?

Tapez ^K Espace pour que JOE affiche les numéros de ligne, colonne et octet sur la dernière ligne de l’écran. Le nombre associé au caractère situé sous le curseur (son code ASCII) est aussi affiché. Vous pouvez faire en sorte que les numéros de ligne et/ou colonne soient toujours affichés dans la barre d’état en plaçant les séquences d’échappement appropriées dans les chaînes de configuration de la barre d’état. Éditez le fichier joerc pour les détails.

QUE SE PASSE-T-IL SI JE TAPE « ^KE » PAR ACCIDENT ?

Tapez la barre d’espace pour exécuter une commande inoffensive (cette dernière affiche le numéro de ligne dans la barre d’état).

SUSPENDRE TEMPORAIREMENT L’ÉDITEUR

Si vous devez suspendre temporairement l’éditeur et revenir à l’interpréteur de commande, tapez ^K Z, ce qui vous permettra de répondre à un courriel ou de lire cette page de manuel, par exemple. Vous devrez taper une des commandes fg ou exit (cela vous sera indiqué lorsque vous taperez ^K Z) pour revenir à l’éditeur.

RECHERCHE DE TEXTE

Tapez ^K F pour que l’éditeur recherche pour vous un fragment de texte vers l’avant ou vers l’arrière. Une invite vous permettra de saisir le texte à rechercher. Après avoir tapé Entrée, il vous sera demandé de choisir des options.
Vous pouvez simplement taper à nouveau Entrée pour que l’éditeur lance immédiatement une recherche du texte vers l’avant ; sinon, vous pouvez choisir une ou plusieurs de ces options :

–
b

Recherche vers l’arrière.

–
i

Rendre la recherche insensible à la casse. Par défaut, la recherche est sensible à la casse.

–
nnn

Si vous saisissez le nombre nnn, JOE va rechercher la nnnième occurrence du texte. Cela s’avère utile pour se positionner à un endroit spécifique dans les fichiers structurés d’une manière régulière.

–
r

Remplacement de texte. Si vous choisissez l’option r, il vous sera demandé de saisir le texte de remplacement. Chaque fois que l’éditeur trouvera le texte recherché, il vous sera demandé si vous voulez remplacer ce dernier par le texte de remplacement. Tapez y pour remplacer le texte trouvé ou n pour ne pas le remplacer, puis se déplacer vers la prochaine occurrence du texte recherché, r pour remplacer toutes les occurrences restantes de la chaîne recherchée sans demande de confirmation (en fonction de l’option nnn ci-avant) ou ^C pour arrêter la recherche et remplacement.

Vous pouvez aussi taper B ou Retour arrière pour revenir à l’occurrence précédente du texte recherché (s’il a été remplacé, ce remplacement est annulé).

–
a

La recherche s’applique à tous les tampons chargés. Par exemple, pour remplacer toutes les occurrences de « toto » par « titi » dans tous les fichiers .c du répertoire actuel, tapez :

joe *.c

^K F
toto <Entrée>
ra <Entrée>
titi <Entrée>
–
e

La recherche s’applique à tous les fichiers de la liste créée par grep(1) ou les erreurs de make(1). Vous pouvez utiliser une commande UNIX pour générer une liste de fichiers et effectuer la recherche et remplacement parmi ces derniers. Vous pouvez utiliser éventuellement ls(1) et find(1) à la place de grep pour générer la liste de fichiers. Ainsi, pour remplacer toutes les occurrences de « toto » par « titi » dans tous les fichiers .c dont le nom commence par « f », tapez :

Esc G

grep -n toto f*.c <Entrée> ^K F
toto <Entrée>
re <Entrée>
titi <Entrée>
–
x

Si cette option est spécifiée, JOE utilise la syntaxe standard pour les expressions rationnelles. Dans cette syntaxe, les caractères suivants ont leur signification spéciale directement et n’ont pas besoin d’être échappés avec une controblique : « . », « * », « + », « ? », « { », « } », « ( », « ) », « | », « ^ », « $ » et « [ ».

–
y

Si cette option est spécifiée, JOE utilise la syntaxe JOE à la place de la syntaxe standard pour les expressions rationnelles. Elle outrepasse l’option -regex.

–
v

Si cette option est spécifiée, JOE envoie des informations de débogage à propos de l’expression rationnelle dans le journal de démarrage. Le journal peut être visualisé à l’aide de la commande showlog.

Vous pouvez taper ^L pour répéter la recherche précédente.

Vous pouvez taper ^K H à l’invite de recherche et remplacement pour afficher la liste de toutes les options de recherche et remplacement.

Expressions rationnelles

Plusieurs séquences de caractères spéciaux peuvent être saisies pour la recherche de texte :

–
\*

Cette séquence correspond à zéro ou plusieurs fois le caractère à sa gauche. Par exemple, si vous saisissez AB\*C comme texte à rechercher, JOE cherchera un « A » suivi d’un nombre quelconque de « B », et enfin d’un « C ».

–
\+

Cette séquence correspond à une ou plusieurs fois le caractère à sa gauche. Par exemple, si vous saisissez AB\+C comme texte à rechercher, JOE cherchera un « A » suivi d’un ou plusieurs « B », et enfin d’un « C ».

–
\?

Cette séquence indique que le caractère à sa gauche est facultatif. Par exemple, si vous saisissez AB\?C comme texte à rechercher, JOE cherchera « AC » ou « ABC ».

–
\{min,max}

Cette séquence indique que JOE doit chercher une chaîne contenant un certain nombre d’occurrences du caractère à sa gauche. Par exemple, AX\{2,5}B correspondra aux chaînes « AXXB », « AXXXB », «AXXXXB » et « AXXXXXB ». min peut être omis pour indiquer 0 occurences. max et la virgule peuvent être omis pour indiquer un nombre quelconque d’occurrences.

–
\.

Cette séquence correspond à un caractère et un seul. Par exemple, si vous saisissez A\.B comme texte à rechercher, JOE trouvera une correspondance pour « AXB », mais pas pour « AB » ou « AXXB ».

–
\!

Cette séquence fonctionne comme \., mais correspond à une expression équilibrée du langage C. Par exemple, si vous recherchez malloc(\!\*), JOE trouvera une correspondance pour tous les appels de la fonction malloc(3), même s’il y a une ) à l’intérieur des parenthèses.

–
\|

Cette séquence correspond au caractère situé à sa gauche ou à sa droite. Par exemple, si vous saisissez A\|B comme texte à rechercher, JOE essaiera de trouver un « A » ou un « B ».

–
\( \)

Utilisez ces séquences pour regrouper des caractères. Par exemple, si vous recherchez \(toto\)\+, JOE essaiera de trouver des chaînes comme « toto » et « totototototo ».

–
^ \$

Ces séquences correspondent au début et à la fin des lignes. Par exemple, si vous recherchez ^test\$, JOE essaiera de trouver une ligne contenant la chaîne « test ».

–
\\\

Ces séquences correspondent au début et à la fin des mots. Par exemple, si vous recherchez \est\\, JOE essaiera de trouver le mot « est », mais pas la chaîne « est » dans « Brest ».

–
\[...]

Cette séquence correspond à n’importe lequel des caractères apparaissant entre les crochets. Par exemple, si vous avez saisi \[Bb]rest comme texte à rechercher, JOE essaiera de trouver « Brest » ou « brest ». Il est possible de spécifier des intervalles de caractères entre les crochets. Par exemple, \[A-Z] correspond à n’importe quelle lettre capitale. Si le premier caractère entre les crochets est « ^ », JOE essaiera de trouver tout caractère qui n’apparaît pas entre les crochets. Pour inclure le caractère « - » lui-même, placez le en première ou dernière position (éventuellement après « ^ »).

–
\\

Cette séquence correspond à un « \ ».

–
\n

Cette séquence correspond au caractère spécial de fin ou de saut de ligne.

Plusieurs séquences de caractères spéciaux peuvent aussi être spécifiées dans la chaîne de remplacement :

–
\&

Cette séquence est remplacée par le texte qui correspond à la chaîne recherchée. Par exemple, si la chaîne recherchée était \\*\\ qui correspond à des mots, et si vous spécifiez "\&", JOE placera des guillemets autour des mots.

–
\1 - \9

Ces séquences sont remplacées par le texte qui correspond au Nième groupement : le texte à l’intérieur du Nième jeu de \( \).

–
\l, \u

Convertir le prochain caractère du texte de remplacement en minuscules ou en capitales.

–
\L, \U

Convertir la partie du texte de remplacement qui suit en minuscules ou en capitales. La conversion s’arrête lorsque \E est rencontrée.

–
\\

Utilisez cette séquence si vous devez insérer une controblique dans la chaîne de remplacement.

–
\n

Utilisez cette séquence si vous devez insérer un saut de ligne dans la chaîne de remplacement.

Quelques exemples :

Supposons que vous avez une liste d’adresses, chacune sur une ligne séparée, qui commencent par "Adresse :" et dont les éléments sont séparés par des virgules, comme ceci :

Adresse : S. Holmes, 221b Baker St., London, England

Si vous voulez réarranger la liste pour mettre le pays en premier, suivi de la ville, du nom de la personne et enfin de l’adresse, vous pouvez faire ceci :

Tapez ^K F pour passer en mode recherche, puis saisissez :

Adresse :\(\.\*\),\(\.\*\),\(\.\*\),\(\.\*\)\$

pour rechercher une correspondance avec "Adresse :", suivie des quatre éléments séparés par des virgules et de la fin de ligne. Quand il vous est demandé de choisir des options, tapez r pour remplacer la chaîne, puis saisissez :

Adresse :\4,\3,\1,\2

pour permuter les éléments selon vos souhaits. Après avoir tapé Entrée, la recherche démarre et la ligne de l’exemple deviendra :

Adresse : England, London, S. Holmes, 221b Baker St.


Séquences d’échappement

JOE reconnaît les séquences d’échappement suivantes dans les chaînes de recherche et remplacement :

–
\x{10ffff}

Cette séquence correspond au code Unicode d’un caractère spécifié en hexadécimal.

–
\xFF

Cette séquence correspond à un caractère spécifique spécifié en hexadécimal.

–
\377

Cette séquence correspond à un caractère spécifique spécifié en octal.

–
\p{Ll}

Cette séquence correspond à tout caractère dans la catégorie ou le bloc Unicode donné.

Les noms de bloc, tels que « Latin-1 Supplement » ou « Arabic » se trouvent ici :

Blocs Unicode ftp://ftp.unicode.org/Public/8.0.0/ucd/Blocks.txt

Les noms de catégorie tels que « Ll » se trouvent ici :

Catégories Unicode ftp://ftp.unicode.org/Public/5.1.0/ucd/UCD.html#General_Category_Values

Notez qu’une lettre seule correspond à tous les noms de catégorie qui commencent par cette lettre. Par exemple, \p{N} (tout nombre) y compris \p{Nd} (chiffre décimal), \p{Nl} (numéro de lettre) et \p{No} (autre nombre).

–
\d

Cette séquence correspond à n’importe quel chiffre Unicode. Elle est identique à \p{Nd}.

–
\D

Cette séquence correspond à tout, sauf un chiffre Unicode. Elle est identique à \[^\p{Nd}].

–
\w

Cette séquence correspond à n’importe quel caractère alphabétique. Elle est identique à \[^\p{C}\p{P}\p{Z}].

–
\W

Cette séquence correspond à tout, sauf un caractère alphabétique. Elle est identique à \[\p{C}\p{P}\p{Z}].

–
\s

Cette séquence correspond à tout caractère d’espacement. Elle est identique à \[\t\r\f\n\p{Z}].

–
\S

Cette séquence correspond à tout, sauf un caractère d’espacement. Elle est identique à \[^\t\r\f\n\p{Z}].

–
\i

Cette séquence correspond au caractère du début d’un identifiant. Elle est identique à \[\p{L}\p{Pc}\p{Nl}].

–
\I

Cette séquence correspond à tout, sauf au caractère du début d’un identifiant. Elle est identique à \[^\p{L}\p{Pc}\p{Nl}].

–
\c

Cette séquence correspond à un caractère de continuation d’un identifiant. Elle est identique à \[\i\p{Mn}\p{Mc}\p{Nd}\x{200c}\x{200d}].

–
\C

Cette séquence correspond à tout, sauf à un caractère de continuation d’un identifiant. Elle est identique à \[^\i\p{Mn}\p{Mc}\p{Nd}\x{200c}\x{200d}].

–
\t Tab
–
\n Nouvelle ligne
–
\r Retour chariot
–
\b Retour arrière
–
\a Alerte
–
\f Page suivante
–
\e Échap
–
\\ Controblique

RECHERCHE INCRÉMENTALE

Tapez Esc S pour lancer une recherche incrémentale vers l’avant, ou Esc R pour une recherche incrémentale vers l’arrière. Au fur et à mesure que vous saisissez la chaîne à rechercher, le curseur se déplace vers la première portion de texte correspondant à l’expression rationnelle que vous avez déjà saisie.

Tapez Esc S ou Esc R à nouveau pour trouver la prochaine occurrence du texte recherché ou pour inverser la direction de recherche.

^S, ^\ et ^L produisent le même effet que Esc S. ^R produit le même effet que Esc R. Ces séquences fournissent la prise en charge de JMACS.

Tapez Retour arrière pour annuler la dernière opération de recherche incrémentale. Cette dernière opération peut être la répétition d’une recherche précédente ou la saisie d’un nouveau caractère.

Utilisez ^Q pour insérer des caractères de contrôle dans la chaîne recherchée. Par le passé, « ` » avait la même fonction.

Tapez toute autre touche pour sortir de la recherche incrémentale.

ALLER VERS LE DÉLIMITEUR ASSOCIÉ

Tapez ^G pour aller vers le délimiteur associé au délimiteur situé sous le curseur. Cette séquence fonctionne pour les délimiteurs sous forme de caractère (comme « ( » et « ) ») et pour les délimiteurs sous forme de mot pour les langages tels que Pascal et Verilog qui utilisent « begin » et « end » pour délimiter les blocs. Elle fonctionne aussi pour les balises de début et de fin en XML. Si un mot est inconnu, ^G lance une recherche avec le mot déplacé dans l'invite de recherche.

Pour que ^G fonctionne avec les délimiteurs sous forme de mot, le curseur doit être positionné sur la première lettre du mot. En XML par exemple, si le curseur est sur le < dans <toto>, il se déplacera vers le > ; par contre, s’il est sur le premier « t », il se déplacera vers la balise </toto> associée. De même, en C, ^G déplacera le curseur entre #if, #else et #endif, mais vous devrez positionner le curseur sur la première lettre de la directive, pas sur le « # ».

^G est suffisamment intelligent pour sauter les délimiteurs placés entre guillemets ou dans des commentaires. Vous devez indiquer à JOE la manière dont votre langage rend compte de cela : voir le fichier ftyperc pour des exemples illustrant la manière d’effectuer cette opération.

De nombreuses options permettent de contrôler le comportement de ^G. Elles permettent de définir les types de commentaire que ^G peut sauter :

–
c_comment
–
cpp_comment
–
pount_comment
–
semi_comment
–
vhdl_comment

Ces options déterminent les chaînes que ^G peut sauter :

–
single_quoted
–
double_quoted

Cette option permet à un fichier de syntaxe annoté de déterminer le texte qui sera considéré comme un commentaire ou les chaînes qui pourront être sautées par ^G :

–
highlighter_context

Cette option active l’utilisation de fichiers de syntaxe pour identifier les commentaires et chaînes qui devront être sautés lors des opérations de ^G. Pour que cette option fonctionne, le fichier de syntaxe doit être annoté avec les mots-clés string et comment.

–
text_delimiters

Cette option permet de fournir une liste de délimiteurs sous forme de mot à prendre en compte. Par exemple, « begin=end:if=elif=else=endif » signifie que ^G provoquera un déplacement du curseur entre les mots-clés « if », « elif », « else » et « endif » associés. Il provoquera aussi un déplacement du curseur entre « begin » et « end ».

^G possède une table intégrée des associations de délimiteurs sous forme de caractère ; il sait que « ( » est associé à « ) ».

^G possède un analyseur intégré pour gérer les balises de début et de fin en XML.


RÉGIONS

Pour déplacer, copier, sauvegarder ou supprimer une portion spécifique du texte, vous pouvez utiliser la sélection de bloc. Tout d’abord, placez le curseur sur le début de la portion de texte sur laquelle vous voulez travailler, puis tapez ^K B. Placez ensuite le curseur juste après la fin de cette portion de texte puis tapez ^K K. Le texte entre le ^K B et le ^K K doit maintenant être mis en évidence. Vous pouvez maintenant placer le curseur à une position quelconque dans le document et taper ^K M pour y déplacer le texte mis en évidence.
Vous pouvez taper ^K C pour faire une copie du texte mis en évidence et l’insérer à la position du curseur. Tapez ^K Y pour supprimer le texte mis en évidence ou ^K W pour enregistrer ce dernier dans un fichier.

^K / est une commande très utile : elle permet de filtrer un bloc de texte à travers une commande UNIX. Par exemple, si vous sélectionnez une liste de mots avec ^K B et ^K K, puis tapez ^K / sort, la liste sera triée. tr(1) est une autre commande UNIX utile pour ^K / : si vous tapez ^K / tr a-z A-Z, toutes les lettres du texte mis en évidence seront converties en capitales.

Comment désélectionner une région sélectionnée ?

Lorsque vous avez effectué un certain nombre d’opérations sur une région, vous pouvez la laisser en évidence si vous pensez que vous n’en avez pas fini avec elle (mais ne tapez pas ^K Y par inadvertance !). Dans le cas contraire, vous pouvez simplement taper ^K B ^K K pour désactiver la mise en évidence.

À partir de la version 4.2 de JOE, vous pouvez taper ^C pour annuler la sélection d’une région.

Nouvelles méthodes pour sélectionner une région

La méthode classique pour sélectionner une région consiste à taper ^K B au début et ^K K à la fin, ce qui définit des marqueurs nommés markb et markk. Une fois ces marqueurs définis, vous pouvez sauter vers markb avec Esc B et vers markk avec Esc K.

Nouvelle méthode : tapez Ctrl-Flèche droite pour initier une sélection vers la droite. Chaque fois que vous taperez Ctrl-Flèche droite à nouveau, le bloc sera étendu d’un caractère vers la droite. Cette opération utilise une macro simple : begin_marking,rtarw,toggle_marking.

Malheureusement, il n’existe pas de méthode standard pour obtenir la séquence de touches générée par l’émulateur de terminal lorsque vous tapez Ctrl-Flèche droite. Vous devez déterminer cette séquence vous-même et l’inscrire directement dans le fichier joerc. Des exemples sont fournis pour xterm(1) et gnome-terminal(1). Tapez ^Q Ctrl-Flèche droite dans JOE pour afficher la séquence à l’écran. Notez que Putty utilise la séquence Esc Esc [ C (qui ne sera pas affichée avec ^Q Flèche droite). Esc Esc correspond cependant à la commande set bookmark ; pour utiliser cette séquence, vous devrez donc tout d’abord dissocier cette commande de cette séquence.

Vous pouvez aussi taper Ctrl-Suppression pour couper et Ctrl-Insertion pour coller si ces séquences de touches sont acceptées.

Si la prise en charge de la souris est activée dans JOE, vous pouvez aussi utiliser cette dernière pour sélectionner du texte.

INDENTER DES BLOCS DE PROGRAMME

Le mode auto-indentation peut être activé à l’aide de la commande ^T I. Normalement, le fichier joerc est configuré de façon que le mode auto-indentation soit activé pour les fichiers dont le nom se termine par « .p », « .c » ou « .h ». Si vous tapez Entrée alors que le mode auto-indentation est activé, le curseur sera placé à la même colonne que celle du premier caractère non blanc de la ligne où il se trouvait auparavant.

Vous pouvez utiliser les commandes ^K , et ^K . pour déplacer un bloc de texte vers la gauche ou vers la droite. Si aucune mise en évidence n’est définie lorsque vous tapez ces commandes, le bloc de texte (tel qu’indiqué par l’indentation) dans lequel se trouve le curseur est sélectionné et sera déplacé lors d’une commande ^K , ou ^K . subséquente.

Le nombre de colonnes dont ces commandes déplacent le bloc et le caractère utilisé pour le déplacement peuvent être définis à l’aide des options istep et indentc. Ces options sont disponibles dans le menu ^T. En outre, ^T = permet de sélectionner rapidement un nombre de colonnes pour l’indentation parmi des valeurs courantes, ainsi que le caractère utilisé.

JOE possède de nombreuses autres options en rapport avec l’indentation :

–
smartbacks
Activer les Retours arrières et tabulations intelligents. Lorsque ce mode est activé, Retour arrière et Tab indentent ou désindentent en fonction de la valeur des options istep et indentc.

–
smarthome
Lorsqu’on tape une première fois la touche Début (Home) ou la séquence ^A, le curseur est déplacé en début de ligne ; si on les tape à nouveau, le curseur est déplacé vers le premier caractère non blanc.

–
indentfirst
La touche Début intelligente déplace directement le curseur vers le premier caractère non blanc au lieu de le déplacer dans un premier temps en début de ligne.

–
purify
Corriger l’indentation, si nécessaire, avant un décalage ou un retour arrière intelligent. Par exemple, si l’indentation utilise un mélange d’espaces et de tabulations, et si indentc a pour valeur l’espace, l’indentation sera convertie en espaces avant l’opération de décalage.

–
guess_indent
Lorsque cette option est spécifiée, JOE essaie de déterminer le caractère et le pas d’indentation en fonction du contenu du fichier. L’algorithme consiste à trouver le Plus Grand Commun Diviseur (PGCD) des trois indentations les plus courantes trouvées dans le fichier.

MODE RECTANGLE

Tapez ^T X pour que ^K B et ^K K sélectionnent des blocs rectangulaires au lieu de blocs de texte continu. Ce mode est aussi connu sous le nom de mode « colonne ». Ce mode permet de déplacer, copier, supprimer ou sauvegarder des colonnes de texte. Vous pouvez aussi filtrer des colonnes de texte avec la commande ^K / (si vous voulez trier une colonne, par exemple). La commande d’insertion de fichier ^K R est aussi affectée.

Combiné avec le mode rectangle, le mode écrasement peut aussi s’avérer utile (^T T). Dans ce cas, les rectangles remplacent le texte existant au lieu de s’insérer avant ce dernier. En outre, la commande de suppression de bloc (^K Y) remplace le rectangle sélectionné par des espaces et des tabulations au lieu de le supprimer. Le mode écrasement est ici particulièrement utile pour la commande de filtrage de bloc (^K /), car il conserve la largeur originelle de la colonne sélectionnée.

MODE IMAGE

Le mode image peut être activé ou désactivé avec la commande ^T P. Le mode image s’avère utile en art ASCII.

Le mode image contrôle la manière dont JOE gère le cas où le curseur se trouve après les fins de ligne. Cela se produit quand vous utilisez les touches Flèche haut ou Flèche bas pour déplacer le curseur depuis la fin d’une longue ligne vers la fin d’une courte ligne.

Si vous essayez alors de taper un caractère :

Si le mode image est désactivé, le curseur saute vers la fin de la ligne et insère le caractère à cet emplacement.

Si le mode image est activé, la ligne est complétée avec des espaces de sorte que le caractère puisse être inséré à la position du curseur.

FENÊTRES

Vous pouvez éditer plusieurs fichiers à la fois ou éditer plusieurs emplacements dans le même fichier. Pour ce faire, tapez ^K O pour partager l’écran en deux fenêtres. Utilisez ^K P ou ^K N pour déplacer le curseur vers la fenêtre du haut ou vers celle du bas. Utilisez ^K E pour éditer un nouveau fichier dans une des fenêtres. Une fenêtre disparaît quand vous sauvegardez le fichier avec ^K X ou abandonnez l’édition du fichier avec ^C. Si vous abandonnez l’édition d’un fichier qui existe dans deux fenêtres, une de ces deux dernières disparaît, mais pas le fichier.

Vous pouvez taper ^K O dans une fenêtre pour créer encore plus de fenêtres. Si vous avez trop de fenêtres à l’écran, mais que vous ne voulez pas en éliminer, vous pouvez taper ^K I. Cela aura pour effet de n’afficher que la fenêtre dans laquelle se trouve le curseur, ou, s’il n’y avait qu’une fenêtre à l’écran, d’essayer d’afficher toutes les fenêtres cachées. S’il y a plus de fenêtres que l’écran peut en contenir, vous pouvez taper ^K P sur la fenêtre du haut ou ^K N sur la fenêtre du bas pour les atteindre.

Si vous avez spécifié plusieurs noms de fichier sur la ligne de commande de JOE, chacun d’entre eux sera placé dans une fenêtre distincte.

Vous pouvez modifier la hauteur des fenêtres avec les commandes ^K G et ^K T.

MODÈLE DU SYSTÈME DE FENÊTRAGE

JOE possède un modèle inhabituel pour son système de fenêtrage. Schématiquement, les fenêtres forment un anneau, mais seule une section de cet anneau peut être affichée à l’écran. Les fenêtres non affichées existent ; elles sont seulement décalées hors de la section de fenêtres visibles. Quand vous tapez ^K N sur la fenêtre au bas de l’écran, la fenêtre suivante dans l’anneau est décalée dans la section des fenêtres visibles, éventuellement en rendant invisible la fenêtre du haut.

Par défaut, JOE tente d’associer chaque tampon chargé à une fenêtre, de sorte que les utilisateurs puissent retrouver tous les tampons en parcourant les différentes fenêtres. La commande exploser (^K I) soit redimensionne toutes les fenêtres à la taille de l’écran de sorte qu’une seule d’entre elles puisse apparaître à l’écran, soit les contracte le plus possible pour en afficher un maximum à l’écran.

D’autre part, JOE prend en charge les tampons « orphelins » — des fichiers chargés dans l’éditeur, mais associés à aucune fenêtre. Normalement, ^C ferme une fenêtre et supprime le tampon qui lui était associé. Ainsi, si vous tapez ^C sur la dernière fenêtre restante, l’éditeur sera normalement fermé. Cependant, s’il existe des tampons « orphelins », ^C les chargera dans cette dernière fenêtre pour vous donner la possibilité de les supprimer explicitement. Si l’option orphan est spécifiée sur la ligne de commande, comme dans joe -orphan *.c, JOE ne chargera que le premier fichier dans une fenêtre, tout en conférant aux autres le statut d’« orphelins ».

L’option orphan permet aussi d’indiquer si la commande d’édition ^K E crée une nouvelle fenêtre pour le fichier nouvellement chargé ou réutilise la fenêtre actuelle (en rendant orphelin son occupant précédent).

La commande bufed invite à saisir un nom de tampon pour passer à la fenêtre correspondante. Sa liste de complètement affiche tous les tampons, y compris les orphelins et les tampons qui sont associés à d’autres fenêtres. Esc V et Esc U (les commandes nbuf et pbuf) permettent de boucler entre tous les tampons à l’intérieur d’une seule fenêtre.

Les fenêtres gèrent une pile d’occupants pour prendre en charge la fonctionnalité de fenêtre pop-up de l’interpréteur. Lorsqu’une fenêtre pop-up est fermée, le tampon précédent est renvoyé à la fenêtre.

TAMPONS VOLATILES

Les tampons volatiles (scratch buffers) sont des tampons que JOE ne prend pas la peine de sauvegarder. JOE ne demande pas de sauvegarder un tampon volatile. Les fenêtres pop-up de l’interpréteur, le journal de démarrage et la fenêtre de messages de log, compile et grep sont des tampons volatiles. Vous pouvez créer votre propre tampon volatile avec la commande scratch.

Les commandes suivantes permettent de charger des tampons volatiles :

–
showlog Afficher le journal de démarrage.
–
mwind Afficher la fenêtre de messages (messages de compile et grep issus des commandes Esc C et Esc G).

MACROS DU CLAVIER

Les macros permettent d’enregistrer une séquence de frappes de touche et de la rejouer en tapant deux touches. Elles s’avèrent utiles pour l’automatisation des tâches répétitives. Pour démarrer l’enregistrement d’une macro, tapez ^K [ suivi d’un chiffre de 0 à 9. Le message (Enregistrement de la macro n...) s’affiche dans la barre d’état. Tapez maintenant la séquence de frappes de touche que vous souhaitez pouvoir reproduire. Les commandes que vous tapez produiront leur effet habituel. Tapez ^K ] pour arrêter l’enregistrement de la macro. Tapez ^K suivi du chiffre sous lequel vous avez enregistré la macro pour exécuter une itération des frappes de touche contenues dans la macro.

Par exemple, si vous voulez insérer « ** » en face d’un nombre de lignes, vous pouvez taper les commandes suivantes :

^K [ 0 ^A **Flèche_bas ^K ]

Cette suite de commandes démarre l’enregistrement de la macro, amène le curseur en début de ligne, insère la chaîne « ** » , déplace le curseur d’une ligne vers le bas et termine l’enregistrement. Comme la frappe de touche nécessaire pour positionner le curseur sur la ligne suivante est incluse, cette macro peut être utilisée de manière répétitive sans avoir à déplacer le curseur manuellement ; c’est un avantage qu’il faut toujours garder à l’esprit lors de l’enregistrement d’une macro.

Sous-routines de macro de clavier

Si vous remarquez que la macro que vous êtes en train d’enregistrer contient elle-même un ensemble de frappes de touche qui se répètent, vous pouvez enregistrer une macro à l’intérieur de cette macro, à partir du moment où vous utilisez un numéro de macro différent. Vous pouvez aussi exécuter des macros précédemment enregistrées depuis de nouvelles macros.

Demander une interruption

Si votre macro comporte une invite pour une entrée de l’utilisateur et si vous voulez que l’utilisateur réponde à l’invite à chaque exécution de la macro, tapez ^K ? à l’emplacement dans l’enregistrement de la macro où l’action de l’utilisateur est requise. L’entrée clavier ne sera pas enregistrée à cet instant. Lorsque l’utilisateur a répondu à l’invite, l’enregistrement de la macro reprend.

À l’exécution de la macro, l’interpréteur de macro se mettra en pause au point où ^K ? a été tapé pour permettre l’entrée de l’utilisateur. Lorsque l’utilisateur aura répondu à l’invite, l’interpréteur exécutera le reste de la macro.

Répétition

La commande de répétition ^K \ permet de répéter, le nombre de fois spécifié, une macro ou toute autre commande d’édition, ou même un caractère normal. Tapez ^K \, puis le nombre de fois que vous voulez répéter la commande, puis tapez Entrée. La prochaine commande d’édition que vous saisirez sera répétée le nombre de fois spécifié précédemment. Par exemple, pour supprimer les 20 prochaines lignes de texte, tapez :

^K \ 20Entrée^Y

MACROS ET COMMANDES

Une macro est une liste de commandes séparées par des virgules. À l’exécution de la macro, chaque commande est exécutée jusqu’à ce que la fin de la liste soit atteinte ou qu’une commande échoue (la commande a renvoyé une valeur différente de zéro). Les commandes en échec émettent une sonnerie si vous avez activé cette dernière (^T B).

Tapez Esc D pour insérer l’ensemble actuel de macros de clavier sous forme de texte dans le tampon actuel. Par exemple, la macro ci-avant qui insère la chaîne « ** » se présente comme ceci :

home,"**",dnarw ^K 0    Macro 0

Vous pourriez insérer cette ligne dans votre fichier .joerc et modifier la séquence de touches (le K 0) pour quelque chose de plus permanent.

Définir votre propre macro

Vous pouvez associer des macros à des séquences de touches ou définir vos propres macros nommées dans le fichier joerc. Par exemple, la ligne suivante définit une macro nommée ma_macro :

:def ma_macro eof,bol

Cette macro va positionner le curseur au début de la dernière ligne du fichier. eof envoie le curseur en fin de fichier et bol le ramène en début de ligne. Lorsqu’une macro a été nommée de cette façon, elle apparaît dans la liste de complètement de l’invite de la commande Esc X.

Invite de commande

Vous pouvez exécuter directement une macro en l’entrant dans l’invite de commande. Tapez Esc X pour afficher l’invite de commande, puis Tab à cette invite pour afficher une liste de complètement de toutes les commandes disponibles.

Voici la liste complète des commandes.

Inhibition d’interruption de macro

Parfois, vous vous attendez à ce que certaines commandes échouent, mais vous voulez que le reste des commandes de la liste soient tout de même exécutées. Pour marquer une commande dont l’échec pourra être admis, ajoutez-lui le suffixe « ! ». Par exemple, voici une macro qui fait défiler la fenêtre au-dessus de la fenêtre actuelle d’une page vers le bas :

prevw,pgdn!,nextw

Si prevw échoue, la macro se termine comme d’habitude. Par contre, si pgdn échoue (déjà en fin de tampon), nextw sera tout de même exécutée de façon que le curseur retourne dans la fenêtre originelle.

Modificateurs des arguments de répétition d’une macro

Un argument de répétition peut être spécifié avec ^K \. Lorsqu’une commande est lancée avec un argument de répétition, elle est exécutée de manière répétitive le nombre de fois spécifié. Si l’argument de répétition est négatif, la commande opposée à la commande spécifiée (si elle existe) est lancée. Par exemple, si vous exécutez la commande rtarw -3 fois, c’est la commande ltarw qui sera exécutée 3 fois. Si une commande est lancée avec un argument de répétition négatif mais que cette commande n’a pas d’opposé, l’argument de répétition est ignoré.

Normalement, si un argument de répétition est spécifié pour une macro, cette dernière est simplement répétée le nombre de fois spécifié. Si l’argument de répétition est négatif, il est ignoré.

Si vous souhaitez autoriser les arguments de répétition négatifs pour les macros afin de modifier leur comportement, ajoutez le suffixe « - » à chaque commande de la macro qui doit être remplacée par son opposé en cas d’argument négatif. Par exemple, voici une macro qui fait défiler une autre fenêtre d’une page vers le bas :

prevw,pgdn-!,nextw

Si vous exécutez cette macro avec -2 comme argument, elle le sera deux fois, mais c’est la commande pgup qui sera exécutée à la place de pgdn (notez que plusieurs suffixes modificateurs peuvent être placés après chaque commande).

Si vous souhaitez qu’une seule des commandes d’une macro (pas la macro entière) soit répétée lorsque vous spécifiez un argument de répétition pour cette dernière, vous pouvez écrire la macro comme ceci :

prevw,pgdn#!,nextw

Si cette macro est exécutée avec 2 comme argument, prevw est exécutée une fois, pgdn deux fois et nextw une fois.

Enfin, il est possible d’exprimer des sémantiques encore plus complexes avec la commande if :

if~,"arg<0",then,

ltarw, else,
rtarw, endif

Lorsque la macro est exécutée, la variable mathématique arg est affectée de la valeur de l’argument de répétition spécifié. La variable argset est définie à vrai si l’utilisateur a spécifié un argument, même si ce dernier est 1. Si aucun argument n’a été spécifié, argset est définie à « faux ».

Si une commande de la liste est suffixée par « ~ » (comme la commande if de l’exemple précédent), la macro n’est pas répétée, même si un argument a été spécifié. La variable arg est tout de même affectée de la valeur de l’argument de répétition spécifié.

Interaction entre les commandes psh et query

La commande psh sauvegarde les positions ^K B et ^K K dans une pile. Lorsque l’exécution de la macro se termine (ou que la commande pop est invoquée), les positions sont restaurées.

La commande query suspend l’exécution de la macro jusqu’à ce que le dialogue en cours soit terminé. Elle suspend aussi l’exécution automatique de la commande pop qui se produit à la fin d’une macro — ainsi, lorsqu’une macro se termine par un dialogue, vous voudrez probablement exécuter la commande query pour éviter que les positions ^K B et ^K K ne soient restaurées trop tôt.

RECHERCHE DE SYMBOLES

Si vous éditez un programme C de grande taille avec de nombreux fichiers source, vous pouvez utiliser le programme ctags(1) pour générer un fichier tags. Ce fichier contient une liste des symboles du programme ainsi que les fichiers et les positions dans ces fichiers où les symboles sont définis.

Tout d’abord, créez le fichier tags à l’aide du programme ctags. Par exemple :

ctags *.c *.h

Cette commande crée un fichier nommé tags dans le répertoire actuel.

JOE recherche le fichier tags dans le répertoire actuel. S’il n’existe pas, JOE essaiera d’ouvrir le fichier spécifié par la variable d’environnement TAGS.

Les chemins dans le fichier tags sont toujours relatifs à l’emplacement du fichier tags lui-même.

Le fichier tags contient une liste des emplacements des définitions des identifiants dans un de ces formats :

identifiant nom_fichier /expression_de_recherche/[;commentaires]
identifiant nom_fichier ?expression_de_recherche?[;commentaires]
identifiant nom_fichier numéro_ligne[;commentaires]

Certaines versions de ctags ajoutent le nom de la classe dans les identifiants :

classe::membre

Dans ce cas, JOE trouvera une correspondance pour n’importe laquelle de ces chaînes :

membre
::membre
classe::membre

Certaines versions de ctags ajoutent un nom de fichier dans l’identifiant :

nom_fichier:identifiant

Dans ce cas, JOE ne trouvera l’identifiant que si le tampon correspond à nom_fichier.

L’expression_de_recherche est une expression rationnelle de style vi, mais JOE ne prend en charge que les caractères spéciaux suivants :

« ^ » au début signifie que l’expression commence en début de ligne
« $ » à la fin signifie que l’expression se termine en fin de ligne
\x protège x (annule l’effet de /, ?, ^ ou $)

Tapez ^K ; pour afficher une invite de recherche de symbole. Si le curseur est sur un identifiant, l’invite est prérenseignée avec ce dernier. Cette invite prend en charge le complètement par la touche de tabulation (elle utilise le fichier tags pour trouver un complètement).

Si vous tapez Entrée, la recherche de symbole commence :

Si une seule correspondance est trouvée, JOE se positionne directement sur la définition du symbole.

S’il y a plusieurs correspondances possibles, le comportement de JOE dépend de l’option notagsmenu. Si cette dernière est activée, JOE se positionne sur la définition du premier symbole. Si vous tapez ^K ; à nouveau avant de taper une autre touche, JOE se positionne sur la définition du symbole suivant, et ainsi de suite. La commande tagjump remplit aussi cette fonction.

Si notagsmenu est désactivée, JOE affiche un menu de toutes les correspondances. Vous pouvez alors sélectionner celle que vous souhaitez et JOE se positionnera sur elle. Si vous tapez ^K ; à nouveau avant de taper une autre touche, le même menu réapparaît avec le curseur à sa position originelle.

Vous pouvez taper ^K - pour ramener le curseur à sa position originelle avant la recherche de symbole (^C remplit souvent la même fonction).

Étant donné que ^K ; charge le fichier de définitions dans la fenêtre actuelle, il est préférable de diviser cette fenêtre en deux au préalable à l’aide de ^K O pour visualiser à la fois le fichier originel et le fichier de définitions.

CALCULATRICE

JOE possède une calculatrice intégrée qui peut être invoquée à l’aide de Esc M.

Fonctions mathématiques

sin, cos, tan, exp, sqrt (racine carrée), cbrt (racine cubique), ln, log, asin, acos, atan, sinh, cosh, tanh, asinh, acosh, atanh, int (valeur entière), floor (la plus grande valeur entière inférieure ou égale à l’expression), ceil (arrondi à l'entier immédiatement supérieur), abs, erf (fonction d'erreur), erfc (1.0 -erf), j0, j1, y0, y1 (calcul des fonctions de Bessel)

Variables

–
e
Affectée de la valeur de ´e´

–
pi
Affectée de la valeur de ´pi´

–
top
Affectée du numéro de ligne de la fenêtre du haut

–
lines
Affectée du nombre de lignes du fichier

–
ligne
Affectée du numéro de ligne actuel

–
col
Affectée du numéro de colonne actuel

–
byte
Affectée du numéro d’octet actuel

–
size
Affectée de la taille du tampon

–
height
Affectée de la hauteur de la fenêtre

–
width
Affectée de la largeur de la fenêtre

–
char
Affectée du code ASCII du caractère sous le curseur

–
markv
Vrai si un bloc valable est défini (^KB ... ^KK)

–
rdonly
Vrai si le fichier est en lecture seule

–
arg
Argument de répétition actuel

–
argset
Vrai si un argument de répétition a été spécifié

–
is_shell
Vrai si exécuté dans une fenêtre active de l’interpréteur

–
no_windows
Aucune fenêtre de tampon à l’écran

–
ans
Résultat de l’expression précédente

Commandes

–
hex
Mode affichage en hexadécimal

–
dec
Mode affichage en décimal

–
ins
Insérer ans dans le tampon

–
sum
Somme des nombres dans le bloc

–
cnt
Comptage des nombres dans le bloc

–
avg
Valeur moyenne des nombres dans le bloc

–
dev
Écart type des nombres dans le bloc

–
eval
Évaluation des expressions mathématiques dans le bloc (ou dans tout le fichier si aucun bloc n’est défini)

–
joe(...)
Exécution d’une macro de JOE (l’argument possède le même format que les macros du fichier joerc). La valeur renvoyée est la même que celle renvoyée par la macro de JOE (en cas de succès pour la macro, renvoie vrai (valeur différente de zéro)).

Par exemple :

joe(sys,"[ 1 == 1 ]",rtn)

([ 1 == 1 ]) est une commande de l’interpréteur. [ est synonyme de la commande UNIX test.

renvoie vrai.

Rappel : l’argument de la commande de macro de JOE if est une expression mathématique. Ainsi, par exemple, la macro :

if,"joe(sys,\"[ 1 == 1 ]\",rtn)",then,"VRAI",endif

écrit « VRAI » dans le tampon.

Opérateurs :

–
!x
Négation logique de x

–
x
Élévation de x à la puissance y

–
a*b
Multiplication

–
a/b
Division

–
a%b
Modulo

–
a+b
Addition

–
a-b
Soustraction

–
a<b
Vrai si a est inférieur à b

–
a<=b
Vrai si a est inférieur ou égal à b

–
a>b
Vrai si a est supérieur à b

–
a>=b
Vrai si a est supérieur ou égal à b

–
a==b
Vrai si a est égal à b

–
a!=b
Vrai si a est différent de b

–
a&&b
Vrai si a et b sont vrais

–
a||b
Vrai si a ou b est vrai ou les deux

–
a?b:c
Renvoyer b si a est vrai, sinon, renvoyer c

–
a=b
Affectation de la valeur de b à a

–
a:b
Exécution de a, puis de b

&&, || et ? : fonctionnement comme en C et sh en ce qui concerne les effets de bord :

FENÊTRES DE L’INTERPRÉTEUR DE COMMANDE

Tapez ^K ´ pour exécuter un interpréteur de commande dans une fenêtre de JOE. Lorsque le curseur est à la fin d’une fenêtre d’interpréteur (utilisez ^K V si ce n’est pas le cas), tout ce que vous saisissez sera passé à l’interpréteur au lieu de l’être au tampon. Toute sortie en provenance de l’interpréteur ou de commandes exécutées dans ce dernier est affichée dans la fenêtre de l’interpréteur (le curseur suit cette sortie s’il est à la fin de la fenêtre de l’interpréteur). Cette commande permet d’enregistrer les résultats de commandes de l’interpréteur, par exemple la sortie de make(1), le résultat de la recherche avec grep(1) d’une chaîne dans un ensemble de fichiers ou l’affichage du contenu d’un répertoire dans une session FTP. En plus des caractères imprimables, les touches et séquences ^C, Retour arrière, Suppr, Entrée et ^D sont transmises à l’interpréteur. Tapez la commande d’interpréteur exit pour arrêter l’enregistrement de la sortie de l’interpréteur. Si vous tapez ^C dans une fenêtre de l’interpréteur alors que le curseur n’est pas à la fin de la fenêtre, l’interpréteur est tué.

Si vous utilisez bash(1), vous pouvez taper ^Q Flèche haut et ^Q Flèche bas pour parcourir le tampon d’historique de bash. D’autres séquences peuvent aussi être utilisées : ^Q ^A amène le curseur en début de ligne et ^Q ^E à la fin. Malheureusement, JOE ne sait émuler qu’un terminal passif ; vous devrez donc faire preuve de beaucoup d’imagination pour effectuer toute édition autre que la frappe de la touche Retour arrière.

En général, tout caractère protégé à l’aide de ^Q est envoyé à l’interpréteur de commande.

Tab, Retour arrière, Entrée, ^C et ^D sont aussi envoyés à l’interpréteur de commande.


FENÊTRES POP-UP DE L’INTERPRÉTEUR DE COMMANDE

Utilisez les touches F1 à F4 pour ouvrir et commuter entre les fenêtres de l’interpréteur de commande.

Les fenêtres pop-up de l’interpréteur de commande utilisent un émulateur de terminal complet de sorte que lorsque vous saisissez man ls, le formatage de la sortie est correct (il fonctionne suffisamment bien pour qu’un programme interactif puisse être utilisé). Même ainsi, la fenêtre de l’interpréteur de commande est encore un tampon d’édition.

L’ancienne fenêtre de l’interpréteur de commande (sans émulation de terminal) existe encore ; elle permet de voir les séquences de contrôle émises par un programme. Pour l’invoquer, utilisez ^K ´.

Davantage de frappes de touche sont transmises au programme en cours d’exécution dans des fenêtres pop-up de l’interpréteur de commande que dans l’ancienne fenêtre. La section :vtshell du fichier joerc permet de spécifier lesquelles. En particulier, les touches fléchées et Ctrl-C sont transmises au programme. Cela implique que vous pouvez facilement parcourir l’historique de bash avec les touches fléchées ou quitter le programme de la manière habituelle avec Ctrl-C.

D’un autre côté, la perte de Ctrl-C implique qu’il n’est plus aussi simple de fermer la fenêtre. Pour y parvenir, vous pouvez déplacer le curseur en dehors du point d’entrée de données de l’interpréteur de commande (avec Ctrl-P), puis taper Ctrl-C. Vous pouvez aussi taper ^K Q. Enfin, vous pouvez saisir la commande pop à l’invite de commande.

Si vous devez passer à l’interpréteur une frappe de touche que JOE utilise habituellement, mettez la entre guillemets. Par exemple, si vous invoquez emacs -nw dans la fenêtre de l’interpréteur, vous pouvez la quitter avec :

^Q ^X ^C

Pour repositionner rapidement le curseur à l’emplacement où les données sont saisies dans l’interpréteur de commande, tapez ^K V.

Lorsque vous ouvrez une fenêtre de l’interpréteur de commande, un script de démarrage spécifique à JOE est lu. Ce dernier est contenu dans le fichier /etc/joe/shell.sh (et /etc/joe/shell.csh). Il contient des alias qui permettent de contrôler JOE avec des commandes d’interpréteur factices. Voici celles que j’ai déjà :

–
clear
fermer la fenêtre de l’interpréteur (supprimer le contenu du tampon)

–
joe fichier
éditer un fichier dans JOE

–
math 1+2
évaluer l'équation en utilisant la calculatrice de JOE

–
cd xyz
changer de répertoire, maintenir JOE à jour

–
markb
identique à ^KB

–
markk
identique à ^KK

–
mark commande
exécuter une commande de l’interpréteur, marquer sa sortie

–
parse commande
exécuter une commande de l’interpréteur, parcourir sa sortie pour trouver des noms de fichier et des numéros de ligne (pour find ou grep)

–
parserr commande
exécuter une commande de l’interpréteur, parcourir sa sortie pour trouver des erreurs (pour gcc)

–
release
supprimer les messages d’erreur trouvés

–
pop
fermer la fenêtre de l’interpréteur (identique à ^K Q)

Ces commandes fonctionnent en émettant une séquence d’échappement reconnue par l’émulateur de terminal : Esc { joe_macro }. À la réception de cette dernière, la macro est exécutée. Pour des raisons de sécurité, seules les macros définies dans le fichier joerc et dont le nom commence par « shell_ » peuvent être exécutées de cette manière.

Exemples d’utilisation

Les fenêtres pop-up de l’interpréteur présentent de nombreux exemples d’utilisation intéressants :

–
Naviguer dans les pages du manuel
Tapez F1 et saisissez man fopen. Utilisez b (u) et la barre d’espace pour contrôler more (ou less) lors de la visualisation de la page du manuel. Vous pouvez laisser la page du manuel dans une fenêtre à l’écran, tout en effectuant une édition dans une autre.
–
Basculer entre des répertoires
Tapez F1 et naviguez vers le répertoire souhaité en utilisant cd. Lorsque vous êtes dans le répertoire de destination, tapez ^K E pour charger un fichier (ou saisissez edit fichier depuis l’interpréteur).
–
Utilisation en conjonction avec l’analyseur d’erreur pour trouver des fichiers
Tapez F1 et naviguez vers un répertoire. Utilisez grep ou find (ou les deux) pour générer une liste de fichiers :

parse grep -n FIXME *.c

ou :


markb; find . | xargs grep -n FIXME; markk; parse

(Notez que vous ne pouvez pas utiliser ceci :


parse find . | xargs grep -n FIXME

... le problème réside dans le fait que seuls les mots à gauche du symbole « | » sont transmis en tant qu’arguments à la commande parse).

Utilisez maintenant ^P pour placer le curseur sur une des lignes de la liste. Tapez Esc espace pour que JOE édite le fichier et saute à la ligne spécifiée (vous pouvez aussi utiliser Esc - et Esc = pour parcourir la liste).

–
Utilisation en conjonction avec la recherche/remplacement pour éditer de nombreux fichiers
Lorsque JOE a une liste de fichiers (issue de ce qui précède), utilisez la recherche/remplacement avec l’option e pour tous les visiter :

^K F
Find: <texte>
Options: re
Replace: <texte de remplacement>
–
Construisez votre projet

Détectez facilement les erreurs de construction avec :


parserr make

Utilisez Esc = et Esc - pour parcourir les erreurs.

Comment cela fonctionne-t-il ?

–
Il existe un nouveau mode « ansi » (Esc X mode ansi). Si ce mode est activé, le rafraîchisseur d’écran dissimule les séquences d’échappement qui se trouvent dans le tampon. Sinon, la sortie en couleur de ´ls´ sera entourée de nombreux artéfacts à cause des séquences d’échappement.
–
Il existe une nouvelle syntaxe intégrée : « ansi » (^T Y ansi). Cette syntaxe analyse les séquences de contrôle de couleur ANSI de façon que le texte soit coloré.
–
Il existe un émulateur de terminal pour interpréter les séquences de contrôle en provenance du programme de l’interpréteur de commande. Il simule un terminal en modifiant le contenu d’un tampon d’édition.
–
Lorsque la fenêtre d’édition est redimensionnée, nous en informons l’interpréteur de commande en envoyant un contrôle d’entrée-sortie (ioctl) TIOCSSIZE ou TIOCSWINSZ, de sorte que le programme qui s’exécute dans l’interpréteur de commande connaisse la taille de la fenêtre.

ANALYSEURS DU COMPILATEUR ET DE GREP/FIND

JOE possède deux analyseurs qui permettent de générer la liste d’erreurs (une liste de paires nom de fichier/numéro de ligne).

La commande parserr recherche les messages d’erreur du compilateur en analysant le tampon entier ou, si un bloc a été défini, seulement la partie correspondante mise en évidence. Les messages doivent posséder ce format :

<remplissage> nom_fichier <remplissage> numéro_ligne <remplissage> : <remplissage>

nom_fichier ne doit contenir que des chiffres, des lettres et les caractères « / », « . » et « - ». Il doit contenir au moins un point « . ». Il doit y avoir un deux-points « : » quelque part après numéro_ligne. Les messages qui ne possèdent pas ce format seront ignorés.

La commande gparse analyse le tampon entier (ou, si un bloc a été défini, seulement la partie correspondante mise en évidence) à la recherche de noms de fichier ou de paires nom de fichier/numéro de ligne en provenance de grep -n, find(1) et de programmes similaires.

nom_fichier
nom_fichier:<remplissage>
nom_fichier:numéro_ligne:<remplissage>

Quand JOE possède sa liste d’erreurs, vous pouvez effectuer plusieurs actions avec elle :

–
Visiter les nom_fichier:numéro_ligne de la liste avec Esc - et Esc =.
–
Faire des recherches/remplacements dans tous les fichiers de la liste en utilisant l’option recherche et remplacement e.
–
Vider la liste en utilisant la commande release.

Vous pouvez aussi utiliser Esc Space (commande jump) pour analyser la ligne dans laquelle se trouve le curseur et sauter vers le numéro de ligne du fichier sélectionné. jump utilise l’analyseur grep/find, à moins que parserr n’ait été précédemment invoquée dans le tampon.

grep-find

Tapez Esc G pour afficher l’invite. Entrez une commande qui génère une sortie sous forme de paires nom_fichier/numéro_ligne ; par exemple : grep -n fred *.c. Cette commande liste toutes les instances de « fred » dans les fichiers *.c. L’option n permet d’obtenir les numéros de ligne.

Vous pouvez maintenant taper Esc Space sur une des lignes pour sauter vers le fichier sélectionné. Vous pouvez aussi utiliser Esc = et Esc - pour naviguer dans les lignes.

Compilateur

Tapez Esc C pour sauvegarder tous les fichiers modifiés et afficher l’invite du compilateur. Entrez la commande que vous souhaitez utiliser pour le compilateur (typiquement make -w). Le compilateur va s’exécuter dans une fenêtre de l’interpréteur de commande. Lorsqu’il aura terminé, le résultat sera analysé.

Le drapeau -w peut être indiqué à make(1) afin que ce dernier affiche des messages chaque fois qu’il change de répertoire. Le format des messages est le suivant :

make[1]: Entering directory `/home/jhallen/joe-editor-mercurial/joe´

S’il y a des erreurs ou des avertissements de la part du compilateur, vous pouvez taper Esc Space sur une des lignes pour sauter vers le fichier sélectionné. Vous pouvez aussi utiliser Esc = et Esc - pour naviguer dans les lignes.

COLORATION SYNTAXIQUE

Pour activer la coloration syntaxique, utilisez ^T H.

Pour sélectionner la syntaxe, utilisez ^T Y. Vous pouvez taper Tab Tab à l’invite pour une liste de complètement.

JOE tente de déterminer la syntaxe à utiliser en se basant sur le nom et le contenu du fichier. Le fichier de configuration /etc/joe/ftyperc contient les définitions.

Chaque syntaxe est définie dans un fichier du répertoire /usr/share/joe/syntax/.

FONCTIONNEMENT DE LA COLORATION SYNTAXIQUE DE JOE

À partir de c.jsf http://joe-editor.hg.sourceforge.net/hgweb/joe-editor/joe-editor/file/tip/syntax/c.jsf.in, légèrement modifié

Un fichier de syntaxe fournit une machine à état fini déterministe qui effectue une analyse lexicale du langage cible (c’est en quelque sorte le « langage assembleur » de la coloration syntaxique. Un programme séparé pourrait, en principe, être utilisé pour convertir vers ce format une syntaxe d'automate fini non déterministe (NFA) basée sur des expressions rationnelles).

Chaque état commence par :

:<nom> <nom_couleur> <contexte>

nom\ est le nom de l’état.

nom_couleur\ est le nom de la couleur utilisée pour les caractères avalés par l’état (en réalité un symbole pour une couleur définie par l’utilisateur).

context\ indique à JOE si le caractère actuel fait partie d’un commentaire ou d’une chaîne, ce qui permet à JOE de sauter les commentaires et les chaînes lors de la recherche de correspondance de caractères comme des parenthèses. Pour utiliser cette fonctionnalité, l’option highlighter_context doit être appliquée à tous les fichiers mis en évidence par la syntaxe correspondante. Pour appliquer cette option, ajoutez-la au fichier ftyperc pour les entrées de fichier concernées.

Les contextes valables sont :

–
comment : ce caractère fait partie d’un commentaire. Exemple : /* commentaire */
–
string : ce caractère fait partie d’une chaîne. Exemple : "chaîne" ´c´ ´chaîne´

Les délimiteurs « comment » et « string » doivent être eux-mêmes marqués avec le contexte approprié. Le contexte étant considéré comme faisant partie de la couleur, les options recolor=-N et recolormark appliquent le contexte aux caractères précédents.

Le premier état défini est l’état initial.

À l’intérieur d’un état, définir des transitions (sauts) vers d’autres états. Chaque saut est de la forme :


<liste_caractères> <nom_état_cible> [<option>s]

Il existe trois manières de spécifier liste_caractères : * pour tout caractère non spécifié autrement, % ou & pour correspondre au caractère dans le tampon de correspondance de délimiteur (% correspond exactement au caractère sauvegardé, alors que & correspond au caractère opposé ; par exemple, « ( » correspondra à « ) » si & est utilisé) ou une liste littérale de caractères entre guillemets (intervalles et séquences d’échappement autorisés ; voir Séquences d’échappement). Quand le caractère suivant correspond à n’importe quel caractère de la liste, un saut vers l'état cible est effectué et le caractère est avalé (on avance vers le prochain caractère à colorer du fichier).

La transition * doit être la première transition spécifiée dans l’état.

Il existe plusieurs options :

–
noeat — Ne pas avaler le caractère ; à la place, le fournir à l’état suivant (cela tend à rendre les états plus petits, mais soyez prudent : vous pouvez provoquer des boucles infinies). noeat implique recolor=-1.
–
recolor=-N — Recolorer les N caractères précédents avec la couleur de état_cible. Par exemple, une fois « /* » reconnu comme le début d’un commentaire en C, vous pouvez le colorer avec la couleur des commentaires en C à l’aide de l’option recolor=-2.
–
mark — Marquer le début d’une région avec la position courante du curseur.
–
markend — Marquer la fin d’une région.
–
recolormark — Recolorer tous les caractères de la région marquée avec la couleur de état cible. S’il n’y a pas de marquage, tous les caractères jusqu’à la position actuelle du curseur seront recolorés. Notez que la région marquée ne doit pas dépasser les limites de la ligne et doit se trouver sur la même ligne que la marque de recoloration.
–
buffer — Commencer à copier des caractères dans un tampon de chaîne, en commençant par le caractère actuel (ne pas terminer le tampon avec une option strings, istrings ou hold correspondante ne pose pas problème — le tampon est limité aux 23 premiers caractères).
–
save_c — Sauvegarder le caractère dans le tampon de correspondance de délimiteur.
–
save_s — Copier le contenu du tampon de chaîne dans le tampon de correspondance de délimiteur.
–
strings — Cette option est suivie d’une liste de chaînes. Si le tampon correspond à une de ces chaînes, un saut vers état cible dans la liste de chaînes est effectué au lieu d’un saut normal.
–
istrings — Identique à strings, excepté que la casse est ignorée. Notez que strings et istrings doivent doivent être les dernières options de la ligne et que toute autre option qui se situe après elles sera ignorée.
–
hold — Arrêter la mise en tampon des chaînes — une option strings ou istrings ultérieure recherchera dans le contenu du tampon à partir de ce point. Cette option s’avère utile pour faire la distinction entre commandes et appels de fonction dans certains langages — write 7 est une commande, alors que write ( est un appel de fonction ; l’option hold permet de s’arrêter à l’espace et de retarder la recherche de chaîne jusqu’à « ( » ou « 7 ».

La liste de chaînes a le format suivant :


"string" <état_cible> [<options>s]
"string" <état_cible> [<options>s]
"&" <état_cible> [<options>s] # correspond au contenu du tampon
# de correspondance de délimiteur
done

(toutes les options décrites ci-avant sont permises, à l’exception de strings, istrings et noeat. noeat est toujours implicite après une chaîne qui correspond).

Singularité : seuls les états ont des couleurs, pas les transitions. Cela signifie que vous devrez parfois générer de faux états avec


* <état_suivant> noeat

pour obtenir une spécification de couleur.

Le tampon de correspondance de délimiteur est destiné à perl(1) et à l’interpréteur de commande : une expression rationnelle en Perl peut être « s<..>(...) », et dans l’interpréteur de commande, on peut écrire : « <<EOS ....... EOS ». L’idée derrière tout ça consiste à capturer le premier délimiteur dans le tampon de correspondance (le < ou premier « EOS ») et à l’associer au second avec « & » dans une chaîne ou une liste de caractères.

sous-routines

Les automates finis de mise en évidence d’état peuvent maintenant effectuer des appels de sous-routine. Cette opération consiste en une instanciation de modèle : l’automate fini appelé est inclus dans votre automate fini actuel, mais il est modifié de sorte que l’adresse de retour pointe vers l’automate appelé. Il n’existe pas encore de pile à l’exécution (l’état est représenté sous la forme d’un seul entier suivi de la chaîne de délimitation sauvegardée).

La récursion est autorisée, tout en s’auto-limitant à 5 niveaux.

Note : cette limite de récursion est obsolète. En effet, les sous-routines utilisent maintenant une pile, de sorte que la profondeur de récursion est sans limite.

Pour appeler une sous-routine, utiliser l’option call :


"\"" fred call=string(dquote)

La sous-routine nommée « string » est appelée et le saut vers « fred » est ignoré. L’option dquote est passée à la sous-routine.

Si vous utilisez recolor avec call, la couleur utilisée sera celle du premier état de la sous-routine.

La sous-routine elle-même revient vers l’appelant comme suit :


"\"" quelque_part return

Si nous sommes dans une sous-routine, elle revient à l’état cible de l’appel (« fred » dans l’exemple ci-avant). Dans le cas contraire, elle saute vers « quelque_part ».

Si vous utilisez recolor avec return, la couleur utilisée sera celle de l’état renvoyé (« fred » dans l’exemple ci-avant).

Il existe plusieurs façons de délimiter les sous-routines, ce qui se reflète dans la manière dont elles sont appelées. Les options sont les suivantes :

–
call=string() — Un fichier nommé string.jsf est la sous-routine. La totalité du fichier constitue la sous-routine. Le point de départ est le premier état dans le fichier.
–
call=library.string() — Un fichier nommé called library.jsf contient la sous-routine. La sous-routine contenue dans le fichier se nomme string.
–
call=.string() — Le fichier actuel contient une sous-routine nommée string.

Lorsqu’une sous-routine se trouve dans un fichier, mais ne remplit pas ce dernier, elle est délimitée comme suit :

.subr string
    

Des drapeaux d’option peuvent être passés aux sous-routines qui contrôlent des directives de style préprocesseur. Par exemple :

.ifdef dquote

"\"" idle return
"´" idle return

.else est aussi disponible. Les .ifdefs peuvent être imbriqués.


LE FICHIER joerc

Les options ^T, les écrans d'aide et les associations entre séquences de touches et commandes de l'éditeur sont tous définis dans le fichier d'initialisation de JOE. Si vous faites une copie de ce fichier (dont l’emplacement est normalement /etc/joe/joerc) vers $HOME/.joerc, vous pourrez personnaliser cette configuration selon vos souhaits. La syntaxe du fichier d’initialisation devrait vous paraître assez évidente et ce fichier contient d’autres instructions.

Le fichier joerc dispose d’une directive permettant d’inclure un autre fichier (:include). Cette fonctionnalité permet d’inclure un fichier nommé ftyperc (dont l’emplacement est habituellement /etc/joe/ftyperc). Le type du fichier ftyperc est « table » qui détermine quelles options locales (y compris la syntaxe pour la mise en évidence) sont appliquées à chaque type de fichier.

Séquence de chargement du fichier d’initialisation

Si le chemin d’un fichier d’initialisation commence par « / » (vous pouvez l’indiquer avec la directive include), JOE n’essaiera de le charger qu’avec son chemin absolu. Dans le cas contraire, JOE tente de charger les fichiers d’initialisation (le fichier joerc et les fichiers qu’il inclut, en général ftyperc) depuis trois emplacements :

–
$HOME/.joerc — Le fichier joerc de l’utilisateur.
–
/etc/joe/joerc — Le fichier joerc du système. Le chemin exact est fixé à la compilation à l’aide de l’option --sysconfdir du script configure.
–
*joerc — Il s’agit d’un fichier interne. Cela signifie que JOE va rechercher le fichier dans une table de fichiers liée avec le binaire de JOE (ils sont dans le fichier interne builtins.c). Un fichier joerc interne est fourni pour que l’éditeur puisse s’exécuter même au cas où le fichier joerc du système serait inaccessible.

Si le fichier joerc du système est plus récent que le fichier joerc de l’utilisateur, JOE enregistre un avertissement dans le journal du démarrage. Dans les versions précédentes, JOE avertissait directement l’utilisateur de cet état de fait — l’idée était que JOE pouvait être inutilisable avec un fichier d’initialisation non à jour.

Sections du fichier joerc

Le fichier joerc est divisé en plusieurs sections :

–
Options globales : options qui ne sont pas spécifiques à un fichier, comme noxon.
–
Options dépendant du nom du fichier et de son contenu : options qui dépendent du type de fichier, comme autoindent. Le fichier ftyperc est inclus dans cette section.
–
Définition système du menu ^T : utilisez :defmenu pour définir un menu nommé de macros. La commande menu permet d’ouvrir un menu nommé spécifique. ^T est une macro qui ouvre le menu racine : menu,"root",rtn.
–
Contenu des écrans d’aide : chaque écran d’aide est nommé. Ce nom permet de fournir une aide dépendante du contexte.
–
Raccourcis clavier : des tables de raccourcis clavier sont définies. Vous pouvez en définir autant que vous le souhaitez (utiliser la commande keymap pour passer à une table spécifique), mais les entrées suivantes doivent être présentes :
–
main Édition des fenêtres
–
prompt Fenêtres d’invite
–
query Invites de requête à un seul caractère
–
querya Requête à un seul caractère pour la mise entre guillemets
–
querysr Requête à un seul caractère pour la recherche et remplacement
–
shell Fenêtres de l’interpréteur de commande
–
vtshell Fenêtres de l’interpréteur de commande de l’émulateur de terminal

Les tables de raccourcis clavier peuvent hériter des raccourcis contenus dans des tables déjà définies. Cela permet de regrouper les raccourcis clavier communs dans une seule table dont les autres pourront hériter.

Commande mode

Le menu ^T permet de contrôler de nombreuses options. Ce menu est défini dans le fichier joerc. Chaque option du menu ^T ne fait qu’exécuter une macro. En général, la macro est la commande mode. La commande mode peut être exécutée directement avec :

Esc X mode <Entrée>

Entrer Tab Tab pour une liste de complètement de toutes les options.

Commande menu

Cette commande ouvre un menu nommé de macros qui a été défini dans le fichier joerc.

Esc X menu <Entrée>

Comme d’habitude, entrer Tab Tab à l’invite pour une liste de complètement des menus existants.

La séquence ^T est liée à la macro menu,"root",rtn — elle ouvre la racine du système de menus d’options.

PRISE EN CHARGE DE LA SOURIS SOUS Xterm

Il existe deux niveaux de prise en charge de la souris. L’option -mouse active le premier niveau qui fonctionnera avec n'importe quel xterm(1) standard. Si l’option -joexterm est aussi spécifiée, la prise en charge de la souris est étendue, mais vous aurez alors besoin d’une version récente de xterm(1) et l’option --enable-paste64 devra être passée au script configure.

Lorsque l’option -mouse est spécifiée, vous pouvez :

–
Cliquer avec le bouton gauche dans une fenêtre de texte pour définir la position du curseur. Cliquer avec le bouton gauche dans une fenêtre différente pour déplacer le curseur vers cette dernière.
–
Sélectionner du texte avec la souris. Tenez le bouton gauche enfoncé et déplacez le pointeur pour sélectionner du texte — cette action produit le même effet que si vous aviez utilisé ^K B et ^K K pour marquer le texte. Cliquer avec le bouton gauche (sans déplacer le pointeur) pour positionner le curseur où vous voulez. Cliquer avec le bouton du milieu pour coller le texte sélectionné à l’emplacement du curseur — cette action produit le même effet que si vous aviez utilisé ^K C. Si vous déplacez le curseur au-delà du bord de la fenêtre de texte, cette dernière défilera d’elle-même pour sélectionner plus de texte. Malheureusement, xterm(1) n’envoie pas de code lorsque le curseur est en dehors du cadre de xterm(1) lui-même ; ce défilement ne fonctionne donc que si le pointeur se trouve toujours dans le cadre de xterm(1). J’ai envoyé un patch à la personne qui entretient xterm(1), mais elle ne l’a pas encore pris en compte.
–
Redimensionner une fenêtre avec la souris : cliquez en maintenant le bouton enfoncé sur une ligne d’état qui sépare deux fenêtres pour la déplacer.
–
Sélectionner des entrées d’un menu (comme un menu de complètement ou le menu d’options ^T) : cliquez sur un item du menu pour y positionner le curseur. Double-cliquez sur un item du menu pour le sélectionner (équivalent à taper Entrée avec le curseur sur lui).
–
Si votre souris possède une roue, faire tourner cette dernière fait défiler la fenêtre qui contient le curseur.

Malheureusement, lorsque -mouse est spécifiée, le couper/coller entre deux fenêtres X ne fonctionne pas comme il le ferait dans une fenêtre de l’interpréteur (clic gauche et déplacement pointeur pour sélectionner, clic milieu pour coller). Pour ce faire, vous devez tenir la touche Maj enfoncée : Maj-clic gauche et déplacement pointeur pour sélectionner et Maj-clic milieu pour coller. Notez que coller du texte dans JOE de cette manière pose problème : tout caractère « ` » sera altéré, car ce dernier signifie « mettre entre guillemets le caractère de contrôle suivant ». De même, si l’auto-indentation est activée, le texte collé ne sera pas correctement indenté.

Note : ces problème de collage ont été résolus dans les versions récentes de JOE.

–
JOE active le mode « collage entre accolades » dans xterm(1) de sorte que le texte collé est mis entre accolades avec une séquence d’échappement. Cette séquence fait que JOE désactive les modes d’auto-indentation, de repli des mots (wordwrap) et d’espaces pour le collage, et les réactive lorsque le collage est terminé.
–
Même si l’émulateur de terminal ne prend pas en charge ce mode de collage avec accolades, JOE détecte le texte collé à l’aide de la chronologie : si le texte arrive d’un seul bloc (tout entier dans le même tampon), le texte est considéré comme du texte collé et l’auto-indentation et le repli de mot sont temporairement désactivés.

Si l’option -joexterm a été spécifiée (et si vous avez indiqué l’option --enable-paste64 au script configure) :

–
Les fonctions de couper-coller sont correctement intégrées à X. Le texte sélectionné par le déplacement du pointeur avec le bouton gauche enfoncé peut être collé dans d’autres fenêtres X (même si le texte sélectionné est plus grand que la fenêtre de texte). Le texte sélectionné dans d’autres fenêtres X peut être collé dans JOE en actionnant le bouton du milieu. Le collage de texte auto-indenté ou contenant « ` » ne pose pas de problème.

L’option --enable-paste64 permet à une application d’échanger avec xterm(1) des données de sélection encodées en Base64. Le programme exerce un contrôle total sur ce que contiennent les données de la sélection et sur le moment où elles sont reçues ou envoyées.

PRISE EN CHARGE DES COULEURS SOUS Xterm

JOE peut utiliser xterm(1) en monochrome ou en 8, 16, 88 ou 256 couleurs. Le nombre de couleurs prises en charge est déterminé par les options indiquées au script configure avant la compilation du code source de xterm(1). L’entrée de termcap ou terminfo doit prendre en charge la manière dont xterm(1) est configuré. Sur ma distribution Slackware Linux, il faut définir la variable d’environnement TERM à une des valeurs suivantes :

–
xterm
–
xterm-color
–
xterm-16color
–
xterm-88color
–
xterm-256color

Si l’entrée de termcap ou terminfo est manquante, vous pouvez ajouter l’option -assume_256color au fichier joerc. Notez que cela ne fonctionnait pas pour terminfo dans les versions de JOE antérieures à 3.4.

Lorsque cela fonctionne, la commande joe -assume_256color -text_color bg_222 devrait afficher un arrière-plan gris.

MODE ÉDITION EN HEXADÉCIMAL

Quand ce mode est sélectionné (en utilisant l’option -hex sur la ligne de commande ou en recherchant « Hex edit mode » après avoir tapé ^T), le contenu du tampon est affiché sous forme de vidage hexadécimal, et toutes les commandes d’édition fonctionnent de la même manière. Il est particulièrement utile d'activer le mode de remplacement (overtype) conjointement avec le vidage hexadécimal (tapez ^T T). Ainsi, la saisie ne se fera pas en mode insertion.

–
Pour saisir l’octet hexadécimal 0xF8, tapez ^Q x F 8
–
Comme d’habitude, vous pouvez utiliser ^K C pour copier un bloc. Si le mode de remplacement est sélectionné, le bloc écrasera les données de destination sans changer la taille du fichier. Dans le cas contraire, il sera inséré.
–
Tapez Esc X byte <Entrée> pour aller vers un numéro d’octet particulier. Des valeurs hexadécimales peuvent être saisies à cette invite sous la forme 0x2000.
–
Les opérations de recherche, recherche incrémentale, recherche et remplacement fonctionnent de la manière habituelle.


VARIABLES D’ENVIRONNEMENT

Le fonctionnement correct de JOE nécessite un réglage approprié de l’environnement. Le débit (en bauds) de la connexion entre l’ordinateur et votre terminal doit être défini de manière appropriée pour que JOE rafraîchisse l’écran avec douceur et pour autoriser la saisie semi-automatique (typeahead) afin de retarder le rafraîchissement de l’écran. Pour ce faire, utilisez la commande stty nnn. Il est conseillé de définir une valeur aussi proche que possible du débit réel de la connexion. Par exemple, si vous êtes connecté avec un modem à 1200 bauds, vous utiliserez cette même valeur pour stty. Si vous êtes connecté avec un modem à 14.4k, alors que le serveur de terminal auquel vous êtes connecté communique avec l’ordinateur à 9600 bauds, vous définirez la vitesse à 9600 bauds. La vitesse spéciale de 38400 ou extb est utilisée pour indiquer que vous avez une connexion à très haut débit, comme dans le cas d’une console mappée en mémoire ou d’un émulateur de terminal X-Window. Si vous ne pouvez pas utiliser la commande stty(1) pour définir le débit réel (peut-être à cause d’un modem communiquant avec l’ordinateur à une vitesse différente de celle à laquelle il communique sur la ligne téléphonique), vous pouvez affecter une valeur numérique à la variable d’environnement BAUD (utilisez setenv BAUD 9600 pour csh ou BAUD=9600; export BAUD pour sh).

La variable d’environnement TERM doit être définie au type de terminal que vous utilisez. Si la taille (nombre de lignes/colonnes) de votre terminal est différente de celle qui est indiquée dans l’entrée de TERMCAP ou TERMINFO, vous pouvez la définir avec la commande stty rows nn cols nn ou en définissant les variables d’environnement LINES et COLUMNS. Sur les systèmes modernes, la taille du terminal est variable et déterminée par un ioctl ; ces paramètres n’ont donc souvent aucun effet.

Normalement, JOE s’attend à ce que le contrôle du flux entre l’ordinateur et votre terminal utilise une négociation de type ^S/^Q (c’est-à-dire que si l’ordinateur envoie des caractères trop rapidement à votre terminal, ce dernier enverra ^S pour arrêter la transmission et ^Q pour la relancer). Si le contrôle de flux utilise une négociation matérielle ou hors bande ou si votre terminal est suffisamment rapide pour toujours absorber la sortie de l’ordinateur et que vous souhaitez mapper ^S/^Q avec des commandes d’édition, vous pouvez définir la variable d’environnement NOXON pour que JOE tente de désactiver la négociation ^S/^Q. Si la connexion entre l’ordinateur et votre terminal n’utilise pas de négociation et que votre terminal n’est pas assez rapide pour absorber la sortie de l’ordinateur, vous pouvez définir la variable d’environnement DOPADDING pour que JOE ralentisse la sortie en intercalant des caractères de remplissage entre les séquences de rafraîchissement de l’écran du terminal.

Voici une liste complète des variables d’environnement :

–
BAUD
Cette variable indique à JOE le débit en bauds du terminal (outrepasse la valeur rapportée par stty(1)).

–
COLUMNS
Spécifier le nombre de colonnes de l’émulateur de terminal (au cas où l’entrée de termcap serait fausse). Cette option n’est pertinente que pour les anciens systèmes qui ne possèdent pas le contrôle d’entrée-sortie (ioctl) « get window size ».

–
DOPADDING
Si cette variable est définie, JOE envoie des caractères NULL de remplissage (pour les terminaux très anciens).

–
DÉBUT
Cette variable indique le chemin du répertoire personnel pour le développement de « ~ » et pour trouver le fichier ~/.joerc et le répertoire ~/.joe.

–
NOM D'HÔTE
Cette variable contient le nom d’hôte à utiliser dans les verrous compatibles EMACS.

–
JOETERM
Cette variable indique le type de terminal utilisé : si elle est définie, JOE l’utilisera en priorité par rapport à TERM.

–
LANG
Cette variable définit les paramètres régionaux (par exemple en_US.utf-8). JOE utilise la première variable définie parmi les suivantes : LC_ALL, LC_CTYPE, LANG.

–
LC_ALL
Cette variable définit les paramètres régionaux (par exemple en_US.utf-8). JOE utilise la première variable définie parmi les suivantes : LC_ALL, LC_CTYPE, LANG.

–
LC_CTYPE
Cette variable définit les paramètres régionaux (par exemple en_US.utf-8). JOE utilise la première variable définie parmi les suivantes : LC_ALL, LC_CTYPE, LANG.

–
LINES
Spécifier le nombre de lignes de l’émulateur de terminal (au cas où l’entrée de termcap serait fausse). Cette option n’est pertinente que pour les anciens systèmes qui ne possèdent pas le contrôle d’entrée-sortie (ioctl) « get window size ».

–
NOXON
Désactiver les contrôles de flux ^S et ^Q, permettant d’utiliser ^S et ^Q comme raccourcis clavier de l’éditeur.

–
SHELL
Cette variable contient le chemin de l’interpréteur de commande (par exemple /bin/sh). Elle est utilisée dans plusieurs cas : si votre système ne possède pas de contrôle de tâche, cet interpréteur est invoqué lorsque vous tapez ^K Z. Il s’agit aussi de l’interpréteur exécuté dans les fenêtres d’interpréteur. Si la variable SHELL n’est pas définie (Cygwin) ou si elle est définie à /bin/sh, JOE invoque la première commande parmi les suivantes dont le chemin existe : /bin/bash, /usr/bin/bash, /bin/sh.

–
SIMPLE_BACKUP_SUFFIX
Si cette variable est définie, son contenu est ajouté à la fin du nom de fichier à la place de « ~ » pour construire le nom du fichier de sauvegarde.

–
TAGS
Si cette variable est définie à un chemin de fichier, JOE tentera d’utiliser ce dernier comme fichier tags s’il n’existe pas de fichier tags dans le répertoire actuel.

–
TEMP
Si cette variable est définie, elle indique le chemin du répertoire pour ouvrir le fichier d’échange à la place de /tmp.

–
TERMCAP
Cette variable est utilisée par l’analyseur du fichier termcap interne de JOE (elle n’est pas utilisée pour terminfo). Une entrée de termcap peut être affectée directement à cette variable (qui sera utilisée si elle correspond à TERM), ou, si elle commence par « / », elle indique une liste de chemins de fichiers termcap à rechercher.

–
TERMPATH
Cette variable indique une liste de chemins de fichiers termcap à rechercher lorsque TERMCAP contient une entrée de termcap (dans le cas contraire, elle est ignorée). La liste de chemins de fichiers termcap par défaut (lorsque ni TERMCAP, ni TERMPATH ne l’indiquent) est : ~/.termcap /etc/joe/termcap /etc/termcap.

–
TERM
Cette variable indique le type du terminal utilisé ; par exemple « vt100 » ou « xterm ».

–
USER
Cette variable contient le nom d’utilisateur à utiliser dans les verrous de fichier compatibles EMACS.


COMMANDES DE JOE REGROUPÉES PAR FONCTION

Ces commandes peuvent être entrées à l’invite ouverte par Esc X.

Programmes d’arrière-plan

–
bknd
Exécuter un interpréteur de commande dans une fenêtre.

–
vtbknd
Exécuter un interpréteur de commande dans une fenêtre d’émulateur de terminal.

–
killproc
Tuer le programme de la fenêtre actuelle.

–
run
Exécuter une commande UNIX dans une fenêtre.

–
sys
Exécuter une commande UNIX et revenir à l’éditeur lorsqu’elle est terminée (les entrées/sorties ne passent pas par l’éditeur, mais nous disposons du code de retour de la commande).

Blocs

–
blkcpy
Copier le bloc marqué et le coller à la position du curseur.

–
blkdel
Supprimer le bloc marqué.

–
blkmove
Déplacer le bloc marqué vers la position du curseur.

–
blksave
Sauvegarder le bloc marqué dans un fichier.

–
copy
Copier le bloc dans le tampon circulaire (kill-ring).

–
drop
Définir markb. Éliminer ce dernier s’il était déjà défini.

–
dropon
Définir markb. Éliminer ce dernier s’il était déjà défini. Activer le marquage.

–
toggle_marking
Si l’on est dans un bloc, effacer markb et markk. Si le marquage est désactivé, définir markb et activer le marquage. Si le marquage est activé, définir markk (échanger avec markb si nécessaire) et désactiver le marquage.

–
begin_marking
Si l’on est sur un côté d’un bloc, définir markb à l’autre côté et activer le marquage. Sinon, définir markb à la position du curseur et activer le marquage.

–
select
Définir markb. S’il l’est déjà, ne rien faire.

–
filt
Filtrer un bloc ou un fichier à l’aide d’une commande UNIX.

–
markb
Définir la marque de début de bloc.

–
markk
Définir la marque de fin de bloc.

–
markl
Marquer la ligne actuelle.

–
nmark
Effacer markb et markk.

–
picokill
Supprimer une ligne ou un bloc.

–
pop
Restaurer les valeurs de markb et markk depuis la pile.

–
psh
Empiler les valeurs de markb et markk.

–
swap
Échanger le curseur et markb.

–
tomarkb
Déplacer le curseur vers markb.

–
tomarkbk
Déplacer le curseur vers markb ou markk.

–
tomarkk
Déplacer le curseur vers markk.

–
yank
Insérer le sommet du tampon circulaire (kill-ring).

–
yankpop
Faire défiler le tampon circulaire.

–
yapp
Ajouter les données supprimées suivantes au sommet du tampon circulaire.

–
upper
Convertir le contenu du bloc en capitales.

–
lower
Convertir le contenu du bloc en minuscules.

Tampons

–
bufed
Menu du tampon.

–
edit
Charger le fichier dans une fenêtre ; le recharger si le tampon existe.

–
switch
Charger le fichier dans une fenêtre ; toujours utiliser le tampon s’il existe.

–
scratch
Affecter un tampon volatile (scratch buffer) à une fenêtre.

–
popabort
Annuler et dépiler une fenêtre (ne rien faire si la pile est vide).

–
nbuf
Charger le tampon suivant dans la fenêtre actuelle.

–
pbuf
Charger le tampon précédent dans la fenêtre actuelle.

–
reload
Recharger le fichier dans le tampon (annuler les modifications).

–
reloadall
Recharger tous les tampons non modifiés.

Déplacement du curseur

–
bof
Déplacer le curseur vers le début du fichier.

–
bol
Déplacer le curseur vers le début de la ligne (toujours).

–
bop
Déplacer le curseur vers le début du paragraphe.

–
bos
Déplacer le curseur vers le début de l’écran.

–
bkwdc
Rechercher un caractère en arrière.

–
byte
Déplacer le curseur vers un numéro d’octet spécifique du fichier.

–
col
Déplacer le curseur vers un numéro de colonne spécifique

–
dnarw
Déplacer le curseur vers la ligne suivante.

–
eof
Déplacer le curseur vers la fin du fichier.

–
eol
Déplacer le curseur vers la fin de la ligne.

–
eop
Déplacer le curseur vers la fin du paragraphe.

–
fwrdc
Rechercher le caractère correspondant en avant.

–
gomark
Déplacer le curseur vers un marque-page.

–
home
Déplacer le curseur vers le début de la ligne.

–
ligne
Déplacer le curseur vers la ligne spécifiée.

–
ltarw
Déplacer le curseur vers la gauche.

–
nedge
Déplacer le curseur vers le bord suivant.

–
nextpos
Déplacer le curseur vers la position suivante dans l’historique des positions.

–
nextword
Déplacer le curseur vers la fin du mot suivant.

–
pedge
Déplacer le curseur vers le bord précédent.

–
prevpos
Déplacer le curseur vers la position précédente dans l’historique des positions.

–
prevword
Déplacer le curseur vers le début du mot précédent.

–
rtarw
Déplacer le curseur vers la droite.

–
setmark
Définir un marque-page.

–
tomatch
Déplacer le curseur vers le délimiteur correspondant.

–
tos
Déplacer le curseur vers le haut de l’écran.

–
uparw
Déplacer le curseur d’une ligne vers le haut.

Suppression

–
backs
Retour arrière.

–
backw
Supprimer le mot précédent.

–
delbol
Supprimer jusqu’au début de la ligne.

–
delch
Supprimer le caractère situé sous le curseur.

–
deleol
Supprimer jusqu’à la fin de la ligne.

–
dellin
Supprimer la ligne entière.

–
delw
Supprimer la fin du mot vers la droite.

Traitement des erreurs

–
nxterr
Aller vers la prochaine erreur analysée.

–
parserr
Analyser les erreurs du fichier actuel.

–
gparse
Analyser la liste de grep du fichier actuel.

–
jump
Analyser la ligne actuelle et s’y positionner.

–
prverr
Aller vers l’erreur analysée précédente.

–
showerr
Afficher le message actuel.

–
grep
Exécuter la commande grep et analyser le résultat.

–
build
Exécuter la commande build et analyser le résultat.

–
release
Effacer les enregistrements d’erreur et de grep.

Sortie

–
cancel
Identique à abort, mais ne renvoie pas d’échec : utile dans les macros pour sortir d’une invite.

–
abort
Abandonner la fenêtre actuelle et son tampon. Avertir si ce dernier a été modifié.

–
abortbuf
Identique à abort, mais échouer seulement si une invite doit être ouverte parce qu’il s’agit de la dernière fenêtre d’un tampon modifié.

–
ask
Ouvrir une invite demandant de sauvegarder le fichier actuel : si l’utilisateur répond « yes », la sauvegarde est effectuée ; s’il répond « no », la commande abort est exécutée. Utilisation dans une macro : « ask,query,exsave ».

–
exsave
Sauvegarder le fichier et quitter.

–
lose
Suppression du tampon dans le style EMACS. Le tampon est supprimé ; toute fenêtre qui le contenait reçoit un tampon volatile (scratch buffer).

–
querysave
Ouvrir une invite demandant de sauvegarder tout tampon modifié. Utilisation dans une macro : « querysave,query,killjoe ».

–
killjoe
Quitter JOE immédiatement sans vérifier la présence de tampons modifiés.

FICHIERS

–
cd
Définir le préfixe de répertoire.

–
save
Sauvegarder le fichier.

–
savenow
Sauvegarder le fichier immédiatement, sauf si son nom est inconnu.

–
insf
Insérer un fichier.

Formatage

–
center
Centrer la ligne.

–
fmtblk
Formater tous les paragraphes dans un bloc.

–
format
Formater le paragraphe actuel.

–
lindent
Indenter vers la gauche.

–
rindent
Indenter vers la droite.

Aide

–
help
Activer ou désactiver l’aide.

–
hnext
Passer à l’écran d’aide suivant.

–
hprev
Passer à l’écran d’aide précédent.

Insertion

–
ctrl
Actionner la touche spécifiée.

–
finish
Compléter le mot dans une fenêtre de texte.

–
insc
Insérer une espace.

–
open
Insérer une nouvelle ligne.

–
quote
Insérer un caractère de contrôle.

–
quote8
Insérer un métacaractère.

–
rtn
Touche Entrée.

–
type
Insérer le caractère saisi.

–
secure_type
Insérer le caractère saisi, mais seulement dans une fenêtre d’invite (pas dans une fenêtre de l’interpréteur).

Macros

–
macros
Insérer des macros clavier dans le fichier actuel.

–
play
Exécuter une macro.

–
query
Suspendre l'enregistrement de la macro pour une requête de l’utilisateur.

–
enregistrement
Enregistrer une macro.

–
stop
Arrêter l'enregistrement de la macro.
–
backsmenu
Annuler dans le menu de complétion de fichier.

–
bofmenu
Aller vers le début du menu.

–
bolmenu
Aller vers le début de la ligne dans un menu.

–
dnarwmenu
Descendre d’une ligne dans un menu.

–
eolmenu
Aller vers la fin de la ligne dans un menu.

–
eofmenu
Aller vers la fin du menu.

–
ltarwmenu
Déplacer le curseur vers la gauche dans un menu.

–
rtarwmenu
Déplacer le curseur vers la droite dans un menu.

–
uparwmenu
Monter d’une ligne dans un menu.

–
dnslidemenu
Faire défiler le menu d’une ligne vers le bas.

–
upslidemenu
Faire défiler le menu d’une ligne vers le haut.

–
pgupmenu
Faire défiler le menu vers le haut.

–
pgdnmenu
Faire défiler le menu vers le bas.

–
tabmenu
Parcourir le menu.

Divers

–
beep
Bip

–
execmd
Exécuter une commande de JOE.

–
debug_joe
Insérer des informations de débogage dans le tampon.

–
math
CALCULATRICE

–
maths
Calculatrice sûre (aucune possibilité d’exécuter des macros de JOE).

–
mode
Invite de saisie du mode.

–
menu
Invite de saisie du menu.

–
msg
Afficher un message.

–
notmod
Effacer le drapeau modifié.

–
retype
Rafraîchir l’écran.

–
shell
Suspendre le processus ou exécuter un sous-interpréteur de commande.

–
stat
Afficher la position du curseur.

–
tag
Recherche dans le fichier de symboles.

–
tagjump
Aller vers la prochaine occurrence du symbole recherché (seulement si notagsmenu est spécifié).

–
timer
Exécuter une macro périodiquement.

–
txt
Insérer du texte. Si le premier caractère est « ` », le texte est considéré comme une chaîne de formatage (c’est-à-dire la chaîne utilisée pour définir la ligne d’état pour les options rmsg et lmsg) et est formaté avant insertion.

–
name
Insérer le nom du fichier actuel.

–
language
Insérer la langue actuelle.

–
charset
Insérer le jeu de caractères actuel.

–
keymap
Adopter une autre disposition du clavier.

Invites

–
complete
Compléter un nom de fichier dans une invite.

–
if
N’exécuter les commandes qui suivent que si l’expression est évaluée à vrai (différente de zéro).

–
then
Identique à rtn, mais ne fonctionne que dans les fenêtres d’invite.

–
elsif
Essayer une nouvelle condition.

–
else
Inverser le drapeau de vérité.

–
endif
Relancer l’exécution des commandes.

Voici un exemple d’utilisation de la macro if :

if,"char==65",then,"c’est un A",else,"ce n’est pas un A",endif __^[ q__

Quand vous saisissez « __^[ q__ », si le caractère sous le curseur est un « A », la chaîne « c’est un A » est insérée dans le tampon, sinon c’est la chaîne « ce n’est pas un A » qui est insérée.

if crée une invite mathématique (comme « __Esc M__ »). then est identique à rtn — elle actionne la touche Entrée pour cette invite.

À l’invite mathématique, les variables suivantes sont disponibles :

–
char
Code ASCII du caractère sous le curseur

–
width
Largeur de l’écran

–
height
Hauteur de l’écran

–
byte
Numéro d’octet

–
col
Numéro de colonne

–
ligne
Numéro de ligne

–
lines
Nombres de lignes du fichier

–
top
Numéro de ligne de la ligne en haut de la fenêtre

Répétition

–
arg
Invite pour répéter l'argument

–
uarg
Argument universel.

Défilement

–
crawll
Faire défiler l’écran vers la gauche.

–
crawlr
Faire défiler l’écran vers la droite.

–
dnslide
Faire défiler l’écran d’une ligne vers le bas.

–
pgdn
Faire défiler l’écran vers le bas.

–
pgup
Faire défiler l’écran vers le haut.

–
upslide
Faire défiler l’écran d’une ligne vers le haut.

Recherche et remplacement

–
ffirst
Rechercher un texte.

–
fnext
Répéter la recherche précédente.

–
isrch
Recherche incrémentale vers l’avant.

–
qrepl
Recherche et remplacement

–
rfirst
Rechercher un texte vers l’arrière.

–
rsrch
Recherche incrémentale inverse.

FENÊTRES

–
explode
Afficher une seule fenêtre ou toutes les fenêtres.

–
dupw
Dupliquer la fenêtre actuelle.

–
groww
Augmenter la taille de la fenêtre.

–
nextw
Déplacer le curseur vers la fenêtre suivante.

–
prevw
Déplacer le curseur vers la fenêtre précédente.

–
shrinkw
Réduire la fenêtre.

–
splitw
Diviser la fenêtre en deux parties.

–
tw0
Éliminer la fenêtre actuelle.

–
tw1
N’afficher qu’une seule fenêtre.

–
mwind
Afficher la fenêtre des messages d’erreur à l’écran et y placer le curseur.

–
showlog
Charger le tampon volatile (scratch buffer) du journal de démarrage dans la fenêtre.

–
mfit
Remplir l’écran avec deux fenêtres : attribuer 6 lignes à la fenêtre en cours et le reste de l’espace à la fenêtre au-dessus. Cette dernière est la fenêtre précédente si elle existe, sinon une nouvelle fenêtre.

Défaire

–
redo
Restaurer la dernière modification annulée.

–
undo
Annuler la dernière modification.

Souris

–
tomouse
Déplacer le curseur à la position à laquelle la souris a été cliquée/glissée.

–
defmdown
Gestionnaire par défaut du simple clic, lié en général à MDOWN. Déplacer le curseur vers la position de la souris et initialiser une région.

–
defmup
Gestionnaire par défaut du relâchement de simple clic. En général, cette macro est liée à MUP. Achèvement de la sélection d’une région.

–
defmdrag
Gestionnaire par défaut du glissement de simple clic. En général, cette macro est liée à MDRAG. Sélection d’une région de texte caractère par caractère.

–
defm2down
Gestionnaire par défaut du double-clic. En général, cette macro est liée à M2DOWN.

–
defm2up
Gestionnaire par défaut du relâchement de double-clic. En général, cette macro est liée à M2UP.

–
defm2drag
Gestionnaire par défaut du glissement de double-clic. En général, cette macro est liée à M2DRAG. Sélection d’une région de texte mot par mot.

–
defm3down
Gestionnaire par défaut du triple-clic. En général, cette macro est liée à M3DOWN.

–
defm3up
Gestionnaire par défaut du relâchement de triple-clic. En général, cette macro est liée à M3UP.

–
defm3drag
Gestionnaire par défaut du glissement de triple-clic. En général, cette macro est liée à M3DRAG. Sélection d’une région de texte ligne par ligne.

–
defmiddledown
Gestionnaire par défaut du clic du bouton du milieu. En général, cette macro est liée à MIDDLEDOWN. Insertion de texte.

–
defmiddleup
Gestionnaire par défaut du clic de relâchement du bouton du milieu. En général, cette macro est liée à MIDDLEUP.

–
xtmouse
Gestion des évènements souris de xterm(1). En général, cette macro est liée à « Echap [ M ». Analyse du reste de la séquence et génération de fausses « touches » qui peuvent être liées à des macros dans le fichier joerc. Cette macro utilise un chronomètre pour détecter les double et triple-clics. Les touches sont : MUP, MDOWN, MDRAG, M2UP, M2DOWN, M2DRAG, M3UP, M3DOWN, M3DRAG, MWUP et MWDOWN.

–
extmouse
Gestion des évènements souris étendus de xterm(1). En général, cette macro est liée à « Echap [ < ».

–
paste
Insérer du texte encodé en Base64 (pour l’option --enable-base64 de xterm(1)).

–
brpaste
Désactiver l’auto-indentation, le repli des mots et les espaces. Le but est de lier cette macro à Esc [ 2 0 0 ~ de sorte que lorsque l’émulateur de terminal envoie un collage souris, le texte soit inséré tel quel.

–
brpaste_done
Restaurer la valeur originelle des modes d’auto-indentation, de repli des mots et des espaces qu’ils avaient avant application de la macro brpaste. Le but est de lier cette macro à Esc [ 2 0 1 ~ de sorte que ces modes soient restaurés après un collage souris.

TRADUCTION

La traduction française de cette page de manuel a été créée par Lucien Gentis <lucien.gentis@univ-lorraine.fr>

Cette traduction est une documentation libre ; veuillez vous reporter à la GNU General Public License version 3 concernant les conditions de copie et de distribution. Il n'y a aucune RESPONSABILITÉ LÉGALE.

Si vous découvrez un bogue dans la traduction de cette page de manuel, veuillez envoyer un message à debian-l10n-french@lists.debian.org.

Mars 2016