1 Emacs comme éditeur de texte

Transcription

1 Emacs comme éditeur de texte
Université de Nice-Sophia Antipolis
Licence Mathématiques-Informatique
Semestre 2
Semaine du 12 mars 2007
Systèmes Informatiques
Mémento pour la séance n◦ 7
1 Emacs comme éditeur de texte
décor
barre de menus
barre de boutons
fenetre
contenu du tampon
curseur
fenetre
contenu du tampon
ligne de mode
contenu du tampon
cadres
ligne de mode
zone d’écho
F IG . 1 – Une session d’Emacs
Caractéristiques associées à un tampon :
– nom du tampon, en général déduit du nom du fichier ;
– fichier associé ;
– répertoire courant ;
– mode majeur ;
– modes mineurs ;
– mode de saisie ;
– mode de codage ;
2
– position du curseur ;
– position des marques.
Commandes de recherche :
Sens
En Avant
En arrière
Directe
Chaîne
Expr. Rég.
C-s RET
C-r RET
C-M-s RET
C-M-r RET
Incrémentale
Chaîne Expr. Rég.
C-s
C-r
C-M-s
C-M-r
La recherche tient ou compte ou non de la différence entre minuscules et majuscules, suivant
la valeur de l’option « Case-insensitive Search » : si elle est en fonction, elle n’en tient pas compte.
En recherche incrémentale, C-w augmente la chaîne cherchée de la fin du mot courant.
Rectangles : seules comptent les coordonnées du début et de la fin de la région.
– C-x r k : tuer le rectangle courant ;
– C-x r y : récupérer le dernier rectangle tué ;
– C-x r o : ouvrir un rectangle en décalant le texte à droite ;
– C-x r c : remplacer le rectangle par des blancs ;
– C-x r r : copier le rectangle dans un registre ;
– C-x r t : remplacer chaque ligne du rectangle par une chaîne ; si le rectangle est de largeur
nulle, cela ajoute la chaîne à cet endroit dans chaque ligne du rectangle.
Registres : variables internes dont le nom est un caractère, pouvant contenir une chaîne ou une
position.
– C-x r s : copier la région dans un registre ;
– C-x r i : insérer le contenu d’un registre ici ;
– C-x r SPC : garder la position du point dans un registre ;
– C-x r f : copier la configuration de fenêtres et de cadres dans un registre ;
– C-x r j : amener le point à l’emplacement conservé dans un registre (ou restaurer la configuration).
Dessins : la fenêtre est un quart de plan en mode remplacement. On entre dans le sous-mode
par M-x picture-mode et on en sort par C-c C-c. Les caractères tapés remplacent ceux qui sont
dans leur position d’écriture, et la direction courante détermine comment le point se déplace
après chaque caractère ; le changement de direction est déterminé par la commande C-c suivi
d’un caractère de direction comme ci-dessous :
‘ ^ ’
\|/
<- ->
/|\
/ . \
Par exemple, C-c \ M-10 \ permet de barrer les 10 prochaines lignes.
Les autres commandes sont :
– C-c C-k : tuer le rectangle courant ;
– C-c C-w R : copier le rectangle courant dans un registre et le tuer ;
– C-c C-y : récupérer le dernier rectangle tué ;
– C-c C-c R : récupérer le rectangle contenu dans un registre.
2 Emacs comme environnement de bureau
Marques du codage MIME :
-- [[type/sous-type;paramètres facultatifs][codage]]
3
– le type peut être text, image, voice, application, external, etc.
– le sous-type dépend du type ; pour text on peut trouver plain ou enriched.
– les paramètres facultatifs dépendent du type et du sous-type ; pour le type text c’est l’alphabet utilisé.
– le codage peut être 7bit, 8bit, binary, base64, quoted-printable, etc.
La marque initiale est
-- [[text/plain;charset=ISO-8859-1][7bit]]
Commandes du codage MIME :
– C-c C-m C-i : insérer un fichier ; le suffixe du fichier détermine en partie les caractéristiques, les autres sont demandées.
– C-c C-m C-g : insérer un lien externe, référence à un fichier accessible par FTP anonyme ;
l’accès sera fait automatiquement à la lecture du message.
– C-c C-y : insérer le message courant, c’est-à-dire celui auquel on répond.
– C-c C-i : insérer un message pris dans un classeur quelconque.
– C-c C-m m : voir le message tel qu’il sera envoyé.
– C-c C-q : renoncer à ce message.
Commandes à la réception du codage MIME :
– K TAB passer au prochain champ ;
– K S-TAB passer au champ précédent ;
– K v voir le champ courant ;
– K i voir la représentation interne du champ courant ;
– K o sauvegarder dans un fichier le champ courant ;
– K a sauvegarder tous les champs dans des fichiers.
On peut aussi passer dans la fenêtre du message (C-x o) puis utiliser les commandes précédentes
sans le K initial. La commande q sort de la fenêtre du message.
Calendrier et agenda : M-x calendar ouvre une petite fenêtre dans le bas du cadre courant
pour y placer le calendrier du mois courant et des deux mois encadrants. Si l’on utilise l’agenda,
il apparaît dans la fenêtre du haut (en entier ou partiellement). Voir une partie des nombreuses
commandes dans le mémento pour Emacs, ou taper ? pour obtenir le manuel.
Calculateur : il est appelé par la commande M-x calculator. Il n’a besoin que d’une fenêtre de
deux lignes, où on saisit les expressions à evaluer sous la forme ordinaire, avec parenthèses. Voici
quelques opérateurs ou commandes :
+ - * / opérateurs binaires ordinaires
\ % division et reste entiers
^ élévation à une puissance
Q ! racine carrée et factorielle
S C T sinus, cosinus et tangente
D B O H saisie et affichage en décimal, binaire, octal ou hexadécimal
q sortie du mode, disparition de la fenêtre
3 Emacs comme environnement de programmation
Informations définies par un mode :
– modèles pour l’affichage enjolivé, sous forme d’expressions régulières ;
– tables syntaxiques, répartissant les caractères en différentes catégories :
– caractères de mots ;
– délimiteurs de commentaires ;
– ensembles de parenthèses se correspondant ;
– blancs ;
– etc.
4
–
–
–
–
abréviations propres au mode ;
règles de présentation des programmes ;
commandes spécialisées ;
etc.
Détermination du mode :
– explicitement par la commande M-x langage-mode ;
– implicitement par le suffixe du nom de fichier ;
– automatiquement par la première ligne du fichier :
signe de commentaire du langage -*- langage -*-
Par exemple pour Emacs-Lisp :
; -*- Emacs-Lisp -*-
Compilation ou recherche :
– M-x compile exécute une commande quelconque dans une nouvelle fenêtre en mode de
compilation.
– M-x grep exécute une commande grep et affiche les résultats dans une nouvelle fenêtre.
– M-x grep-find fait la même chose en parcourant les répertoires à l’aide de find.
Dans les trois cas, les deux commandes suivantes peuvent être utilisées :
– C-x ‘ (M-x next-error) amène dans la fenêtre courante le fichier concerné par le prochain
message d’erreur (si on a utilisé compile) ou la prochaine chaîne trouvée (dans les deux
autres cas), le curseur étant sur la ligne concernée.
– RET dans la fenêtre produite par la commande amène le fichier concerné dans une autre
fenêtre.
Shell ou Telnet : les deux commandes ouvrent une fenêtre dans un mode du même nom, avec
des commandes spécifiques :
– M-p ou M-n progressent dans l’historique des commandes déjà tapées.
– Les commandes qui envoient un signal doivent être préfixées par C-c, par exemple C-c C-c
pour tuer le processus interactif courant.
– C-c C-r place le point au début des derniers résultats (ce qui a été affiché depuis la dernière
commande).
– C-c C-o efface les derniers résultats.
Ediff : appel par M-x ediff ; les deux fichiers comparés sont identifiés A et B. Rendre active la
très petite fenêtre qui s’ouvre et reçoit les commandes :
– ? : élargit la fenêtre de commande pour afficher la liste des commandes disponibles.
– n ou SPC passe à la différence suivante.
– p ou DEL passe à la différence précédente.
– a (ou b) copie la différence courante de A (ou B) vers B (ou A).
– z suspend l’exécution de Ediff.
– q termine l’exécution de Ediff.
4 Personnalisations immédiates
Abréviations : Une chaîne de caractères, l’abréviation, est remplacée automatiquement par son
extension au moment de la frappe. Il faut être dans le mode mineur Abbrev grâce à la commande
M-x abbrev-mode.
La table globale est valable quel que soit le mode, la table locale est liée au mode majeur
courant.
L’abréviation est un mot, et commence et se termine à un séparateur de mot. Autres commandes :
– M-’ : l’abréviation commence au point.
– C-x a e : l’abréviation se termine au point.
5
– C-x a g : le mot qui précède est une extension globale, son abréviation est demandée dans
le mini-tampon.
– C-x a l : même chose pour une extension locale.
– C-x a i g : le mot qui précède est une abréviation globale, son extension est demandée
dans le mini-tampon.
– C-x a i l : même chose pour une abréviation locale.
– M-x list-abbrevs : lister toutes les abréviations dans un nouveau tampon ; on peut le modifier directement, et mettre les abréviations en vigueur par C-c C-c.
Extension dynamique : la commande M-/ cherche à compléter le mot qui précède à l’aide d’un
mot de même préfixe trouvé auparavant dans le tampon courant. En répétant cette commande
sur place, on remonte dans le tampon à la recherche d’autres extensions possibles, puis dans la
suite du tampon, puis dans les autres tampons existants.
La commande M-C-/ se limite normalement au tampon courant, et affiche dans l’autre fenêtre
l’ensemble des extensions possibles.
Macros : Une macro est une suite de commandes d’Emacs (commandes abrégées, commandes
textuelles, utilisation de menus ou même caractères ordinaires), qu’on conserve pour la ré-utiliser
telle quelle.
– C-x ( : commence la définition ; toutes les commandes qui suivent sont à la fois exécutées
immédiatement et ajoutées à la définition.
– C-x ) : termine la définition.
– C-g : abandonne la définition ; c’est aussi ce que fait l’apparition d’une erreur.
– C-x e : exécute la dernière macro définie ; on peut précéder cette commande de M-0, qui
l’exécute indéfiniment jusqu’à l’apparition d’une erreur.
– M-x name-last-keyboard-macro : donne un nom à la dernière macro, qui peut alors être
utilisée comme une commande textuelle.
– C-x k : modifie la dernière macro.
– C-x q : met dans la macro une interrogation de l’utilisateur.
Options de fonctionnement : Elles sont accessibles par le menu Options1 . Cela permet de changer l’état de onze bascules :
– Global font lock mode : mécanisme d’affichage avec présentations et couleurs spéciales
des différents composants des tampons, suivant le mode courant.
– Transient mark mode : affiche de manière visible la sélection courante.
– Show Paren mode : quand le curseur est sur une parenthèse, la parenthèse symétrique est
mise en évidence ; la discordance de parenthèse est notée aussi.
– Line Truncation : les lignes trop longues sont tronquées plutôt que repliées à l’affichage.
– Auto fill : coupure automatique entre deux mots des lignes trop longues, en cours de
frappe. La colonne au-delà de laquelle ce mécanisme entre en jeu est fixée par la commande
C-x f.
– Case-insensitive search : dans les recherches (et les remplacements), majuscules et minuscules sont confondues.
– Use Directory names in buffer names : construire les noms des tampons en y incluant
les noms de répertoires.
– Save place in files between sessions : permet de se retrouver dans un fichier au point
où l’on était à la fin de la session précédente.
– Automatic file (de)compression : permet de travailler sur les fichiers comprimés sans
demander explicitement la décompression et la compression.
– Debug on error : permet d’obtenir une trace d’exécution en cas d’erreur de manipulation ou
d’erreur de fonctionnement.
– Debug on Quit : même chose au moment où l’on termine Emacs.
1 Rappelons que si la souris n’est guère ou pas utilisable, la commande M-‘ (M-x tmm-menubar) permet d’accèder aux
menus avec toutes leurs possibilités.
6
Internationalisation : Les caractères sont codés de manière interne sur deux octets, pour pouvoir représenter simultanément la plupart des alphabets répandus.
– Codage : C’est la manière de représenter les caractères dans les fichiers, soit par l’utilisation
d’une des normes de l’ISO, soit par des normes plus spécialisées. Emacs reconnaît en général automatiquement le code utilisé, et le signale dans les premiers caractères de la ligne de
mode. Le caractère 1 indique le codage ISO-8859-1, convenant au français et à la plupart
des langues européennes.
– Affichage : déterminé par les polices disponibles sur le serveur X ou sur le terminal. Un
caractère non affichable est représenté par son code octal précédé du caractère \.
– Saisie : permet d’utiliser des combinaisons de touches du clavier pour coder des caractères
qui n’ont pas de touche affectée. Le mode de saisie French-Postfix est repéré par le code
FR< dans la ligne de mode. On saisit le caractère accentué en saisissant la lettre puis l’accent.
Si l’on double l’accent, il apparaît tel quel.
– Modifications par commandes abrégées (voir le sous-menu Mule du menu Options) :
– C-\ : active ou désactive la méthode de saisie par défaut.
– C-x C-m C-\ : change de méthode de saisie.
– C-h I : décrit la méthode de saisie actuelle.
– C-h C : décrit la méthode de codage actuelle.
– C-h h : donne des exemples des principaux alphabets affichables.
5 Utilisation des mécanismes de personnalisation
Principes : Affectation de valeurs à des options, qui sont des variables internes à Emacs. Une
option peut avoir une valeur booléenne, entière, un symbole, une valeur d’un type énuméré, une
chaîne de caractères, une liste de valeurs, une fonction, etc. Toutes ont une valeur initiale déterminée à la construction d’Emacs, puis modifiée à l’appel d’Emacs, par le fichier de configuration
local :
/usr/local/share/emacs/version/site-lisp/site-start.el
puis par le fichier de configuration personnel ~/.emacs. Vous trouverez le numéro de version de
votre éditeur favori dans le menu d’aide, ou par la commande M-x emacs-version.
Mécanismes : Accès par le menu Options, sous-menu Customize Emacs.