Prise de contact avec GNU Emacs

De Wicri Manuel
Fenêtre GNU Emacs à l'ouverture

GNU Emacs est l'une des versions les plus populaires de l'éditeur de texte Emacs. Ce tutoriel est dédié à introduire son usage depuis un ordinateur personnel (sous Windows ou Max OS X) pour des opérations de Wicrification.

Pour :

Barre de menus et commandes

L'éditeur Emacs se manipule généralement à l'aide de commandes utilisant des touches de contrôle. La barre de menu permet un apprentissage progressif d'une partie de ces commandes.

Les commandes avec la touche Control

Sur la barre de menu, l'onglet File donne accès à une liste de commandes dont certaines sont accompagnées de codes équivalents. Par exemple, la fin du menu, qui est associé à l'onglet File, contient :

Quit (C-x C-c)

La notation C-x correspond à la combinaison de touches Control et x, ou Ctrl+x.

Pour sortir d'emacs on peut alors cliquer sur cette ligne ou taper au clavier la suite :

Ctrl+x
Ctrl+c

Les commandes avec la touche Méta

Emacs utilise également la touche dite Méta pour des combinaisons de touches. La notation M-< signifie qu'il faut utiliser la combinaison de touches Alt+< pour positionner le curseur en début de texte à éditer (en haut à droite).

Cette touche est sujette à des différences suivant les claviers et systèmes.

  • Sous windows, il faut utiliser Alt+<
  • Sous Mac OS X, il faut utiliser Opt+<
  • Dans tous les cas, on peut utiliser la séquence Escape < (attention, dans ce cas, activer les touches de façon consécutive et non simultanée)

Le buffer * scratch *

Emacs utilise un ensemble de Buffers pour gérer les textes en cours d'édition. L'un d'eux est disponible pour des opérations ponctuelles. Son nom est * scratch *. Ce buffer va nous servir pour de premiers exercices.

Pour y accéder, utiliser la première ligne de l'onglet Buffer de la barre de menu. La fenêtre est alors initialisée avec un commentaire en anglais.

Pour effacer ce texte, il suffit de le sélectionner avec la souris et de l'effacer par la commande C-w (ou Ctrl+w). On peut également utiliser la touche ← Backspace.

Un premier exercice

Voici une suite de nom de personnes dans une liste en code Wiki et qu'il s'agit de convertir en forme normalisée, avec uniquement la première lettre en majuscule.

* JEANNE DUPONT
* HENRY SMITH
* RENÉ TERRIER

On va notamment utiliser la commande Emacs M-l ou Esc l qui convertit la suite d'une chaîne de lettres en minuscules. La signification mnémotechnique du « l » de M-l est lower case.

Dans le buffer * scratch *, vidé de son contenu initial faire un copier coller de la liste ci dessus et positionner le curseur en haut à gauche de la fenêtre Emacs (commande M-< , ou Esc <).

La suite de 3 commandes de déplacement à droite () positionne le curseur sur le E de JEANNE. La commande M-l effectue le passage en minuscules.

On peut procéder de même pour l'ensemble de la liste. L'onglet Edit donne accès à une commande Undo en cas de fausse manipulation.

Introduction aux macros du clavier

Une macro clavier permet d'enregistrer une suite de commandes, puis de les ré-exécuter. Les macros constituent un outil intéressant pour traiter des documents conséquents.

Un premier exemple

Pour créer une macro, il suffit d'encadrer une séquence de frappe par « C-x ( » et « C-x ) ».

Par exemple, la séquence :

Ctrl+x ( A B C D Ctrl+x )
mémorise une chaîne « ABCD ».

Pour reproduite l'opération, il suffit de taper : « C-x e » ou Ctrl+x e

Si l'on veut enchaîner plusieurs exécutions, on peut utiliser la commande de répétition :

Esc «  un nombre entier  » «  une commande de base  »
par exemple
Esc 1 2 Ctrl+x e
imprimera
ABCDABCDABCDABCDABCDABCDABCDABCDABCDABCDABCDABCD

Application aux listes de noms

Pour appliquer ce mécanisme à une suite de lignes, il convient de bien maîtriser les manipulations élémentaires, telles que :

  • retour en début de ligne C-a (ou Ctrl+a)
  • aller en fin de ligne C-e (ou Ctrl+e)

Vous pouvez maintenant appliquer le mécanisme à l'exemple présenté plus haut. Commencer par effacer tout ce que contient le buffer * scratch * et refaire un copier/coller de la liste initiale.

Le traitement doit être soigneusement étudié pour être répétitif. En supposant que le curseur se trouve en début de ligne à traiter, la séquence d'opérations est la suivante :

  1. ouverture d'une macro : Ctrl+x (
  2. saut de trois caractères :
  3. conversion de la fin du prénom : esc l
  4. saut de deux caractères :
  5. conversion de la fin du nom : esc l
  6. retour en début de ligne : Ctrl+a
  7. passage à la ligne :
  8. fermeture de la macro : Ctrl+x )

Pour l'appliquer à la fin du fichier, il suffit de faire :

esc 2 Ctrl+x e

Voir aussi

Pour en savoir plus :