Une première approche de l'éditeur Emacs
Date de publication : 07/01/2008
Par
hiko-seijuro (hiko-seijuro)
Cet article est une introduction très générale de l'éditeur Emacs. L'objectif est de permettre au lecteur
de prendre en main l'outil, de se familiariser avec quelques spécificités utiles et enfin de donner un
aperçu des possibilités de l'outil.
I. Introduction
II. Installation de Emacs
II-A. Installation sous Linux
II-B. Installation sous Windows
III. Présentation d'Emacs
III-A. Généralités
III-B. Les touches et raccourcis principaux
III-C. Raccourcis via la touche ctrl
III-D. Raccourcis via la touche meta
IV. Emacs pour les programmeurs
IV-A. Une petite explication
IV-B. Les modes et add-ons
IV-C. Edition
IV-D. Compilation
x
IV-E. Debuggage
V. Ce que Emacs peut faire de plus...
V-A. Emulation d'un terminal
V-B. Naviguer sur internet avec Emacs
V-C. Aller sur l'IRC avec Emacs
V-D. Emacs et les images
VI. Conclusion
VII. Bibliographie (pour aller un peu plus loin....)
VIII. Remerciements
I. Introduction
Emacs est un éditeur de texte extrêmement puissant et complet. En général,
il est mis en "compétition" avec l'éditeur vim disponible sous linux. Le but
de cet article n'est pas de fournir un comparatif entre ces 2 géants du texte
mais simplement de permettre au lecteur de se familiariser un peu plus avec cet
outil.
Emacs est, en réalité, un interpréteur Lisp qui émule un éditeur de texte.
Son développement a été initié par Richard Stallman le fondateur de GNU
en 1984. Ainsi, l'éditeur a été écrit en C et il est possible d'étendre ses
possibilités grâce au langage Emacs Lisp (bâti lui aussi à l'aide du langage C)
 |
Les notions abordées dans cet article peuvent, en théorie, s'appliquer à partir de
n'importe quelle version d'Emacs. Je tiens donc à préciser que la version utilisée
pour la rédaction de cet article est la 22.1 sur linux (fedora).
|
Cet article va se dérouler en X phases : pour commencer, nous allons
expliquer comment installer Emacs sous Windows et sous Linux. Ensuite, nous allons
voir les raccourcis principaux et enfin nous allons présenter la notion de mode et
les modes principaux.
II. Installation de Emacs
II-A. Installation sous Linux
Pour installer Emacs sous Linux, je vous laisse le soin d'utiliser la méthode standard liée
à votre distribution. En règle générale, les dépôts généralistes possèdent les paquetages
nécessaires.
Pour effectuer une installation à partir des sources, vous pouvez les télécharger
ici. Vous pouvez vous aider du fichier
INSTALL. En règle générale, la séquence suivante suffit :
- cd <répertoire d'emacs>
- ./configure
- make
- make install
II-B. Installation sous Windows
Emacs est aussi, malgré ce que l'on pourrait penser, disponible sous Windows. Je vous
conseille de télécharger la version patchée présente
ici
Il vous suffit de suivre les instructions de l'installateur. L'installation globale est
la plus pertinente. Vous arrivez alors sur cet écran :

gestion des associations
L'installateur vous laisse deux possibilités :
-
Aucune association de fichier n'est effectuée sauf les fichiers .el (emacs lisp)
-
Vous pouvez choisir les fichiers à associer (il s'agit de la liste d'extensions
sur l'image ci-dessus). Ensuite l'installateur vous demandera confirmation sur les
extensions à associer.
Vous pouvez terminer l'installation normalement avec l'installateur. Il reste une étape
à faire soi-même : configurer la variable HOME. Il s'agit d'une variable d'environnement
qui représente le répertoire où Emacs ira chercher son fichier de configuration (_emacs.el)
sous Windows.
 |
Le fichier de configuration est bien _emacs(.el) sous Windows. Il est possible d'avoir
un fichier .emacs comme sous Linux, mais n'espérez pas le créer directement sous Windows
car vous aurez alors le message suivant : "Vous devez spécifier un nom de fichier". Il
considère cela comme une simple extension.
|
III. Présentation d'Emacs
III-A. Généralités
Emacs peut se présenter de deux manières différentes :
- Une fenêtre graphique comme suit :

présentation de Emacs
-
Une interface textuelle directement intégrée au terminal (très utile sous une installation
minimale de linux) :

interface textuelle d'Emacs
Une fenêtre Emacs peut se diviser en buffer visible ou non. Concrètement, il s'agit de fichiers
ouverts qui seront affichés ou bien simplement mis en arrière plan. Voici une capture avec
5 buffers visibles :

Emacs avec plusieurs buffers visibles
Un buffer principal ou plusieurs buffers principaux permettent d'éditer des fichiers alors que LE buffer de
commandes permet de lancer des commandes spécifiques à Emacs
III-B. Les touches et raccourcis principaux
Dans cette partie, nous allons aborder les raccourcis qui sont spécifiques à Emacs et qui sont
très différents de ceux utilisés généralement. Avant de lister les raccourcis, il faut aborder
la différence entre la touche ctrl et la touche alt, pour les pcs, qui est appelé
meta d'un point de vue généraliste.
La plupart des raccourcis associés à des manipulations du buffer principal, du texte ou du code
proprement dit, sont accessibles à la touche ctrl.
Les raccourcis liés à l'environnement et aux modes, que nous verrons plus tard, sont accessibles
via la touche meta.
III-C. Raccourcis via la touche ctrl
Voici la liste des raccourcis principaux accessibles via la touche ctrl. En général, ils sont
notés sous la forme C+<touche>. Commençons par les raccourcis basiques :
| Raccourcis |
Signification |
| C+<x> C+<c> |
Quitter l'application |
| C+<x> k |
Fermer le buffer |
| C+<x> f |
Ouvrir un fichier |
| C+<x> C+<s> |
Sauvegarder un fichier |
Poursuivons maintenant avec les raccourcis spécifiques au texte :
| Raccourcis |
Signification |
| C+<x> h |
Sélectionner la totalité du buffer |
| C+<w> |
Couper la région sélectionnée |
| C+<y> |
Coller ce qui a été copié ou coupé |
| C+<s> |
Effectuer une recherche dans le texte |
| C+<_> |
Annuler une modification |
Pour obtenir plus de raccourcis spécifiques à la touche <ctrl>, il faut saisir
la suite C+<x> C+<h> pour obtenir la liste fournie par Emacs.
III-D. Raccourcis via la touche meta
Comme indiqué précédemment, la touche meta varie d'un système à une autre : pour un
pc, il s'agit de la touche alt, pour un mac, de la touche pomme.
La touche meta est rattachée de manière (très) générale à la notion de mode qui sera abordée
plus loin. Néanmoins, elle permet d'accéder à quelques opérations utiles. Comme indiqué dans la
partie précédente, la buffer de commande d'Emacs supporte la complétion (avec la touche TAB.
Cela permet de pouvoir retrouver la commande facilement. Voici donc quelques commandes utiles avec
la touche meta :
| Raccourcis |
Signification |
| meta+<x> help |
Obtenir l'aide d'Emacs |
| meta+<x> <nom du mode> |
Lancer un mode emacs |
IV. Emacs pour les programmeurs
IV-A. Une petite explication
Emacs est un outil très utile, surtout pour les programmeurs. Nous allons ici voir comment utiliser
Emacs pour éditer vos codes sources dans votre langage favori. Nous n'allons pas rentrer dans les
détails car le but de cet article est de permettre à l'utilisateur de prendre en main Emacs.
IV-B. Les modes et add-ons
Pour commencer, il faut introduire la notion de mode. Pour qu'Emacs soit le plus polyvalent possible,
il est possible de le lancer sous une configuration précise suivant ce que l'on souhaite faire. Un mode permet
une spécialisation temporaire d'Emacs : par exemple le mode nxml dédié aux codes XML, le mode C pour les codes
C, ...
A la notion de mode se distingue la notion d'Add-on. En effet, il est possible d'accroître les possibilités de
l'outil en lui greffant des modules dédiés à une cible précise mais indépendante de ce que l'on manipule. Par
exemple l'outil de gestion de version CVS, ...
Certaines personnes ne font pas forcément la distinction, je n'y accorde donc que peu d'importance mais le concept à
comprendre est que suivant le "type" de fichier ouvert, Emacs aura un comportement spécifique : la coloration syntaxique,
l'indentation, ... tout ce qui est relatif au contenu du fichier est géré par le mode.
Comme vous le verrez plus loin, on peut considérer le buffer comme la virtualisation d'un fichier. Ainsi certains modes
fonctionne sur la notion de buffer comme le mode ERC.
IV-C. Edition
L'édition d'un code source peut démarrer de 2 manières : soit on lance emacs avec, en arguments, le nom des fichiers; soit
on ouvre un nouveau fichier. Dans le premier cas, le mode associé est en général automatiquement intégré à Emacs. En revanche,
dans le second cas, et si le mode n'est pas lancé automatiquement, il faut le lancer manuellement grâce à la commande
meta+x <nom du mode> (par exemple meta+x nxml-mode pour les fichiers xml).
Du mode lancé dépendent la coloration syntaxique, l'indentation, les raccourcis, ... En revanche, il faut savoir que Emacs n'est
pas doté de l'auto-complétion au sens commun du terme (celle des mots clefs). En revanche, il permet d'effectuer de la complétion
avec des mots présents dans les buffers ouverts (autrement dit, des mots déjà saisis dans les fichiers ouverts). Le raccourci de base
pour la complétion est CTRL+x /
Il est possible d'ouvrir un mode qui ne soit pas associé directement au fichier : par exemple, au lancement je crée un fichier php
mais dont le contenu ne sera que du html. Il est possible de lancer le mode html manuellement mais le mode php sera désactivé
automatiquement. Pour mieux comprendre la distinction, voici des captures montrant un même fichier HTML ouvert avec plusieurs modes
différents :

Mode HTML

Mode TEXT

Mode PHP
 |
Il est important de retenir que "du mode lancé dépend le comportement d'Emacs"
|
IV-D. Compilation
Emacs permet de compiler les programmes directement grâce à la présence de l'item "compile" dans le menu "tools".
Emacs vous demandera alors la ligne de compilation à exécuter puis enfin ouvrira un buffer contenant les messages du compilateur
 |
Je vous conseille de créer un makefile car Emacs lance par défaut la compilation via l'outil Make. De plus, cela vous permettra
d'avoir un mode de compilation fiable et de ne pas ressaisir à chaque fois des lignes parfois fastidieuses. L'inconvénient est que
le makefile doit se trouver dans le répertoire du buffer courant.
|
Voici un exemple de compilation avec Emacs (il s'agit d'un projet en C++) :

Exemple de compilation avec Emacs
Plus intéressant, Emacs permet directement d'aller directement à la ligne ayant provoquer l'erreur de compilation ou bien le simple
"warning". Pour cela, il vous suffit de cliquer sur le buffer contenant le résultat de la compilation puis de "naviguer dans les
erreurs" grâce au menu "Compile". Ensuite cliquer sur le nom du fichier, Emacs se charge du reste :

Exemple de Warning avec Emacs
x
IV-E. Debuggage
Emacs permet d'obtenir une "interface" à gdb (et toute la suite jdb, ...). Pour lancer cette interface, il faut sélectionner l'élément
Debugger du menu Tools. Emacs vous demandera la ligne de commande permettant de lancer le debugger (par exemple : gdb
<nom du programme à debugger>). Vous devriez obtenir une fenêtre ressemblant à ceci :

Aperçu de l'interface pour debugger avec Emacs
Comme vous pouvez le constater, les principales commandes sont présents dans la barre d'icônes. Le seul défaut de cette interface est
qu'elle ne fait qu'émuler GDB sans y apporter une certaine abstraction graphique (comme DDD par exemple), notamment pour affecter
les points d'arrêts.Il vous reste donc 2 possibilités pour les placer :
- manuellement dans le buffer contenant gdb avec la commande break;
- en ouvrant le fichier, en allant à la ligne concernée et en effectuant la suite C+<x> <spac> (la barre espace !)
Dans tous les cas, lors du "run", le fichier où le point d'arrêt est positionné sera ouvert. Vous obtiendrez quelquechose comme ceci :

Point d'arrêt avec Emacs
En fouillant dans le menu GUD, vous accéderez aux différentes possibilités du debugger(affichage de la pile d'appel, ...), mais
je vous laisse aller tester cela.
V. Ce que Emacs peut faire de plus...
Dans cette dernière partie, nous allons voir ce que Emacs permet de faire en plus de la simple
manipulation de texte ou de code. Evidemment, tout ne sera pas abordé. L'objectif de cette
partie est simplement de donner un petit aperçu des possibilités de l'outil.
V-A. Emulation d'un terminal
Emacs permet d'intégrer un terminal émulé. Pour cela, après avoir saisi la suite meta-x
saisissez la commande term. Emacs vous demandera le terminal que vous souhaitez émuler. J'ai
choisi le terminal Bash et voici ce que l'on obtient :

Aperçu d'un terminal émulé sous emacs
Pour pouvoir fermer le buffer du terminal, il faut quitter le terminal lui-même en premier. Evidemment, l'avantage
d'une telle disposition est de pouvoir superposer le fichier que l'on souhaite visualiser et le terminal pour
le manipuler comme suit :

Aperçu d'un terminal et d'un fichier manipuler sous emacs
V-B. Naviguer sur internet avec Emacs
Je tiens à préciser avant toute-chose qu'Emacs ne propose pas un navigateur web comme Firefox
ou Internet Explorer. Il s'agit d'un navigateur textuel comme le propose plutôt Lynx. La conséquence
principale peut se voir directement sur la capture de mon espace personnel sur developpez.com sous
Emacs :

Aperçu d'un site avec Emacs
Certains peuvent se dire "pouaaah c'est moche !". Le but d'un tel navigateur est plus la rapidité et
l'accessibilité : cela permet de pouvoir effectuer des "copier/coller" rapides sans avoir à changer
d'application.
Pour naviguer sur internet vous devez utiliser le mode w3m. Vous pouvez accéder à votre page
favorite en utilisant le raccourci : meta+<x> puis en tapant w3m ou bien
w3m-browse-url. Le second cas vous demandera directement la page que vous souhaitez afficher.
Emacs devrait ressembler à la capture précédente, sans compter la page et les couleurs qui vous
sont propres (la personnalisation d'Emacs sera abordée dans un prochain article).
Vous savez maintenant comment naviguer de manière simple sur la toile avec Emacs. Pour plus de détails,
je vous laisse le soin de vous reporter à cette
page.
V-C. Aller sur l'IRC avec Emacs
Il existe un mode Emacs qui permet d'aller chatter sur l'IRC (Internet Relay Chat) : ERC. Pour le lancer, il suffit
de saisir la suite meta+x puis "erc". Emacs vous demandera de saisir le serveur, le port, votre pseudo et enfin
le mot de passe associé (qui est en général inexistant car il ne s'agit pas du mot de passe "nickserv"). Vous arriverez
sur une fenêtre ressemblant à ceci :

Connexion IRC sous Emacs
Via le menu ERC, vous pouvez joindre un chan ou bien vous identifier pour "nickserv". Vous arrivez alors sur une fenêtre
représentant le chan comme suit :

Chan IRC sous Emacs
V-D. Emacs et les images
Plus étonnant, Emacs permet d'afficher les images comme un visualisateur classique regardez :

Emacs et les images
VI. Conclusion
Résumons ce que vous devez être capable de faire après la lecture de cet article :
- Manipuler un texte simple avec Emacs (ouverture, édition, sauvegarde, recherche, ...)
- Connaître les raccourcis élémentaires (fichiers, buffer, aide, ...)
- Comprendre la notion de modes sous Emacs
- Manipuler un code source ainsi que compiler et debugger un programme C/C++ avec Emacs
- Comprendre qu'Emacs ne se résume pas à un simple éditeur de code ou de texte
En regardant ce résumé, on peut se rendre compte de la puissance d'Emacs. Cette puissance en a fait un outil
incontournable sous Linux. Néanmoins, il souffre d'une difficulté d'accès due à la prédominance des outils
Microsoft sur le marché et donc de leur ergonomie associée. A mon sens, ne pas vouloir utiliser Emacs à cause
de cette différence équivaut à mettre de côté une approche qui peut se révéler plus adéquate et plus puissante
que celle proposée par certains outils. (Ces remarques peuvent aussi prévaloir pour l'éditeur VI).
Ce tutoriel n'aborde sans doute qu'une infime partie de Emacs, je vous laisse donc le soin de découvrir les modes
et composants qui vous seront utiles !
VII. Bibliographie (pour aller un peu plus loin....)
VIII. Remerciements
Je tiens à remervier Gorgonite, Ovh et Alp pour leur attention et leur relecture; Nicopyright, Farscape et Fearyourself
pour leur soutien à toute épreuve. Je remercie plus particulièrement Dut qui a relu cet article de manière attentive pour
en extraire les fautes d'orthographe.


Les sources présentées sur cette page sont libres de droits,
et vous pouvez les utiliser à votre convenance. Par contre, la page de présentation
constitue une oeuvre intellectuelle protégée par les droits d'auteurs. Copyright ©
2007 hiko-seijuro. Aucune reproduction,
même partielle, ne peut être faite de ce site et de l'ensemble de son contenu :
textes, documents, images, etc sans l'autorisation expresse de l'auteur.
Sinon vous encourez selon la loi jusqu'à 3 ans de prison et jusqu'à 300 000 E
de dommages et intérêts.
Cette page est déposée à la
SACD.