Gnu Emacs

Benjamin Drieu (drieu@bocal.cs.univ-paris8.fr)

18 Avril 1997


Ce document s'adresse aux débutants sous Emacs. Il leur montrera comment débuter dans l'utilisation de cet éditeur de textes performant, complet et flexible en leur expliquant les concepts de base d'Emacs, mais aussi en leur dressant une liste de commandes usuelles. Si vous voulez en savoir plus sur Emacs, je vous conseille de vous reporter à la documentation officielle d'Emacs que vous trouverez sur le site FTP de GNU (ftp://ftp.prep.ai.mit.edu), ou à sa traduction en cours par l'association APRIL. Si vous aussi voulez participer à la traduction du manuel d'Emacs et au formidable élan du Free Software, rendez vous sur le site web d'APRIL (http://www.april.org) pour y trouver plus d'informations.

1. Introduction

2. Commandes de base

3. Buffers & Fenêtres

4. Emacs comme environnement de travail

5. Se créer son Emacs

6. Copyright

Gnu Emacs: Introduction

1. Introduction

1.1 Pourquoi Emacs ?

Pourquoi utiliser Emacs ? Tout simplementparce que c'est l'éditeur de textes le plus agréable, et surtout parce que c'est le plus évolutif et le plus maniable. De plus, Emacs permet de faire quantité de choses sans sortir de l'éditeur de textes: envoyer du courrier, utiliser ftp , lire les news , faire du dessin en mode texte, lancer des commandes shell , lire les mans, travailler avec les répertoires...

1.2 Conventions utilisées dans ce document

Je me contenterai d'utiliser les conventions d'Emacs quant à la représentation des séquences de touches à frapper. C'est-à-dire:

Les noms des fonctions Emacs sont en italique afin que vous puissiez les réutiliser dans la programmation LISP d'Emacs. Vous pouvez de plus les lancer en frappant M-x nom-de-la-fonction .

Vous trouverez les séquences de touches à frapper en TeleType pour une lecture plus claire.

1.3 Définitions


2. Commandes de base

2.1 Lancement et interruption d'Emacs

On lance Emacs tout simplement en tapant emacs au prompt du shell. Mais pour éditer le fichier toto.txt, on utilise la ligne de commande emacs toto.

C-x C-c permet de quitter Emacs, C-z permet de le suspendre afin de pouvoir le rappeler avec fg sous le shell. Cependant, cette dernière façon de sortir ne fonctionne que si on inhibe la commande C-z dans le fichier de configuration .emacs avec la ligne (global-unset-key "\C-z").

2.2 Déplacement du curseur

Le curseur d'Emacs se déplace tout simplement avec les flèches situées sous le pavé numérique, mais on peut gagner beaucoup de temps en utilisant les raccourcis clavier.

Par exemple, pour vous déplacer d'une position quelconque au milieu d'une ligne vers son début, tapez C-a au lieu de revenir au début avec les flèches. Le curseur apparaît immédiatement au début de la ligne. Les commandes de déplacement sont une alternative efficace à l'utilisation des flèches.

Commandes de remplacement d'un caractère simple:

Commandes de déplacement sur plusieurs caractères:

2.3 Utiliser les modes

Une notion importante dans Emacs est celle des modes: quand Emacs ouvre un fichier existant, il applique au buffer crée pour l'occasion un mode précis. Un mode donne à un buffer des caractéristiques propres: des fonctions et des raccourcis spéciaux, des variables, une indentation particulière, et sous xemacs, un menu déroulant propre au mode.

Quelques exemples de modes: text, C, lisp, SGML, texinfo, LaTeX, ...

2.4 Destruction & presse-papiers

Destruction simple

La plus simple manière de détruire un texte consiste à utiliser la touche DEL (ou encore appelée BackSpace ou Bs par nos amis anglophones), qui détruit le caractère immédiatement à gauche du curseur.

Mais quand on a un certain nombre de mots, de phrases ou de paragraphes à détruire, d'autres commandes sont plus appropriées.

Commandes de destruction:

Mais il existe une autre façon de détruire du texte: l'utilisation des régions.

Destruction et Régions

La manière la plus simple de définir une région est de se positionner sur l'une ou l'autre des deux extrémités d'une suite de caractères et de taper C-@ ou C-ESPACE (le caractère sous le curseur est ainsi marqué par Emacs), puis de se positionner à l'autre extrémité de la région à définir.

Autres manières de définir une région:

A partir de là, en tapant C-w ou M-w, le texte de la région est envoyé dans le presse-papiers (mais dans le cas de C-w le texte est efface et dans le cas de M-w , le texte reste dans le buffer édité).

Le presse-papiers

Le texte se trouvant dans le presse-papiers peut être rappelé de deux manières sous Emacs. La première en utilisant C-y (yank) , qui insère à la position du curseur le texte se trouvant dans le presse-papiers (soit le texte qui à été copié en dernier dans le presse-papiers), et la deuxième en utilisant M-y (yank-pop) juste après un yank pour remplacer le texte du presse-papiers par la copie précédente, et l'insérer à la position du curseur.

2.5 Annulation

Argh ! Vous avez détruit 3 pages de texte par inadvertance. Pas de panique, Emacs peut réparer tout ca. En tapant C-x u (undo) vous pouvez annuler la dernière action effectuée,

Vous avez tapé quelque chose au clavier et vous ne savez pas comment vous en sortir ? C-g (keyboard-quit) permet d'annuler toute action courante au clavier (saisie de nom, ...) mais pas une commande validée.

2.6 Manipulation de fichiers

Emacs permet (dans le mode édition) de lire un fichier, de créer un fichier, d'insérer un fichier dans un autre, et bien sûr de sauver un fichier.

Commandes de manipulation de fichier sous Emacs:

2.7 Chercher et remplacer

Notez que par défaut la recherche dans Emacs ne respecte pas la casse. Pour que la recherche y prête attention, mettez dans votre fichier de configuration .emacs la ligne suivante: (setq-default case-fold-search nil)

"Incremental search"

L' "incremental search" est une recherche dans un texte avec pour argument une chaîne de caractères. Mais la différence avec une recherche normale est qu'au fur et à mesure que l'utilisateur tape la chaîne, le curseur se place sur la première occurrence trouvée.

On lance l' ”incrémental search” (elle s'effectuera en avant à partir de la position du curseur) en tapant C-s (isearch-forward) . Pour effectuer la même recherche vers l'arrière, la commande est C-r (isearch-backward).

Notons que l' "incremental search" reprend sa recherche au début du texte quand elle arrive à la fin sans trouver d'occurrence (overwrapped search).

Chercher/Remplacer

Et si je tape un listing, et que j'ai envie de remplacer les 250 occurrences du nom de ma fonction toto par un nom de fonction plus parlant ?

Pas de problème: en tapant M-x replace-string (replace-string) Emacs remplace toutes les occurrences, mais sans confirmation.

Et si je ne veux en remplacer qu'une partie ? En utilisant la commande M-% (query-replace), Emacs vous demandera à chaque occurrence de confirmer en tapant y pour remplacer l'occurrence, n pour la garder telle quelle, ou ESC pour arrêter l'opération.


3. Buffers & Fenêtres

3.1 Buffers, fichiers, et fenêtres

On ne peut travailler sous Emacs que si on a compris la différence entre fichiers, buffers, et fenêtres.

Elle est la suivante: un fichier est une suite d'octets réservés sur un disque, repérée par un nom. Un buffer est une copie de travail qu'Emacs fait d'un fichier afin de pouvoir travailler dessus. Mais une fenêtre n'est qu'une zône de l'écran dans laquelle est affiché un buffer.

3.2 Utiliser les buffers

Quand on lance Emacs, deux buffers sont déjà crées (le buffer *Buffer List*, et le buffer *scratch* (en fait un espace de travail vide où vous pouvez taper votre texte) si Emacs a été appelé sans paramètre, ou le buffer portant le nom du paramètre). Dans le buffer *Buffer List*, on trouve le nom des buffers ouverts (donc, *Buffer List*, et *Scratch* ou un buffer ayant le même nom que le paramètre).

Pour se promener dans les buffers, on utilise C-x b nom du buffer . Si le buffer existe, on se retrouve dedans, sinon Emacs ouvre un nouveau buffer au nom précisé.

Pour avoir la liste des buffers, on ouvre le buffer *Buffer List*, ou on utilise C-x C-b , qui ouvre le buffer *Buffer List*.

Pour détruire un buffer (quand on utilise Emacs pendant longtemps, la liste des buffers s'allonge considérablement), on utilise C-x k (kill-buffer) suivi du nom du buffer (par défaut, le nom du buffer courant).

La commande C-x s (save-some-buffers) permet de sauver à la chaîne plusieurs fichiers ouverts simultanément, alors que C-x C-s ne sauve que le buffer courant.

Pour renommer un buffer, on utilise la fonction rename-buffer (M-x rename-buffer) .

3.3 Utiliser les fenêtres

Au démarage, Emacs ouvre une fenêtre, pour le buffer *Scratch* ou pour le buffer d'un fichier appelé en argument.

Les commandes pour manipuler les fenêtres sont les suivantes:


4. Emacs comme environnement de travail

Un des avantages d'Emacs par rapport aux autres éditeurs de texte (vi, elvis, ed, ...) est qu'il permet de travailler sur autre chose que de l'édition de texte: c'est un intégré.

4.1 Envoyer et recevoir des mails avec Emacs

Emacs est très utile pour envoyer des mails car il permet de taper ses mails directement dans l'éditeur de textes au lieu d'utiliser un éditeur de textes comme logiciel d'appoint (comme avec elm).

Pour taper une lettre, on utilise la commande C-x m (mail) . Emacs ouvre alors un buffer *mail* dans lequel il place les lignes:

To:
Subject:
--text follow this line--

Il suffit alors de mettre l'adresse derrière le To:, le sujet derrière le Subject:, et de taper le texte sous le --text follow this line-- .

Enfin, quand la lettre est tapée, on peut l'envoyer en tapant C-c C-c, ce qui ferme le buffer et envoie la lettre. Si on veut garder une trace de ce mail, on peut bien évidemment effectuer une sauvegarde du fichier avant de lancer le mail avec C-x C-s . Une autre façon d'envoyer le mail consiste à utiliser C-c C-s qui ne détruit pas le buffer *mail* .

On peut inclure une signature à la fin du buffer en tapant C-c C-w, ce qui ajoute à la fin de la lettre le contenu du fichier $HOME/.signature s'il existe.

On peut faire bien d'autres choses avec le lecteur de mails d'Emacs (blind copies, reply, ...), mais et je vous conseille de vous reporter à la documentation d'Emacs si vous voulez en savoir plus à ce sujet.

4.2 Utiliser les commandes shell dans un buffer

Utiliser le shell sans quitter Emacs: c'est cooooool !

En tapant M-x shell , Emacs ouvre une nouvelle fenêtre contenant le buffer *shell*, dans laquelle on peut taper des commandes shell, en utilisant le presse-papiers, les recherches, bref, toutes les commandes standards d'Emacs.

Notez qu'Emacs lance le shell comme dans une session normale (exécution du fichier .bashrc , alias , etc...).

4.3 Travailler avec les répertoires

Emacs offre aussi la possibilité de travailler sur les répertoires. Il suffit de les ouvrir comme on ouvre un fichier (C-x C-f) ou au démarrage avec un argument.

A partir de là, Emacs crée un buffer au nom du répertoire, qui contient le nom des fichiers qui le composent ainsi que leurs attributs (permissions, propriétaire, groupe, date, taille, ...).

L'utilisateur peut agir sur un fichier en se positionnant sur sa ligne, et en appuyant sur une des touches suivantes (entre parenthèses la commande UNIX correspondante):

4.4 Lire les man

Emacs permet la consultation directe de la documentation on-line d'UNIX (les mans). L'avantage par rapport à la lecture par la commande UNIX man est que la consultation est beaucoup plus facile grâce aux capacités d'Emacs.

On appelle les mans avec la commande M-x man. Emacs demande ensuite quelle page du manuel doit être appelée (par exemple, fork(2)), puis ouvre un buffer contenant la page correspondante du manuel.


5. Se créer son Emacs

Emacs est un éditeur de textes agréable et complet, mais il est certain qu'il ne peut pas répondre aux attentes de chacun. C'est pourquoi Emacs est (presque) totalement paramétrable, ce qui permet à chacun de se faire son Emacs personnel, en utilisant les macros, la personnalisation du clavier, la programmation LISP, ou en modifiant les variables d'Emacs.

5.1 Les Macros

Une macro-commande est un ensemble répétable de commandes Emacs enregistrées au préalable par l'utilisateur.

Généralement, ces macros permettent de travailler à la chaîne en effectuant de grosses modifications sur un texte en quelques secondes.

Commandes pour utiliser les macros:

5.2 Personnalisation du clavier

La personnalisation du clavier passe par la modification du fichier .emacs ou par l'utilisation de la commande M-x. Elle permet d'exécuter quelques commandes à la suite comme dans les macros.

Pour définir le clavier on utilise define-key ou global-set-key (on peut aussi utiliser local-set-key pour définir une séquence de touches sur un buffer uniquement), et global-unset-key pour rendre neutre une séquence de touches.

Lors de la personnalisation du clavier, on utilise les conventions suivantes:

Par exemple, pour insérer dans un buffer un petit smiley dès qu'on tape C-u, on va insérer dans le fichier .emacs les lignes:

5.3 Les variables d'Emacs

Emacs possède une multitude de variables système, ce qui permet à l'utilisateur de modifier Emacs a sa guise en évitant la programmation Emacs LISP.

Quelques variables d'Emacs (entre parenthèses, la valeur par défaut). Cette liste est bien entendu loin d'être exhaustive:


6. Copyright

Ce document est placé sous copyright (c) 1997 de Benjamin Drieu, association APRIL.

Ce document peut être reproduit et distribué dans son intégralité ou partiellement, par quelque moyen physique que ce soit. Il reste malgré tout sujet aux conditions suivantes :