Emacs
famille d’éditeurs de texte De Wikipédia, l'encyclopédie libre
Emacs est une famille d'éditeurs de texte, connus pour leur extensibilité et leur capacité à s’adapter à une grande variété de tâches informatiques[1].

Emacs constitue un framework basé sur un interpréteur Lisp interactif (REPL), conçu pour développer et exécuter des applications textuelles, par défaut un éditeur, et les automatiser par le biais de macros. Ce système offre une plateforme intégrée où des fonctionnalités comme l’édition de texte et de code, la gestion de courriels, la navigation web ou l’organisation de tâches coexistent dans un environnement cohérent, piloté par un même langage et une même logique[2],[3].
L'EMACS originel, signifiant Editing MACroS running on TECO, c'est-à-dire « macros d'édition pour TECO », a été écrit en 1976 par Richard Stallman, initialement avec Guy Steele. Il a été inspiré par les idées développées dans TECMAC et TMACS, deux jeux de macros d'édition pour TECO, notamment écrits par Guy Steele, David Moon, Richard Greenblatt et Charles Frankston[4].
Parmi les nombreuses déclinaisons apparues au fil des ans, GNU Emacs, initié en 1984 par Stallman, est devenu l’implémentation de référence et continue d’évoluer grâce aux contributions de la communauté. XEmacs, un fork de GNU Emacs débuté en 1991, a également été une implémentation majeure d'Emacs avant que son développement ne ralentisse dans les années 2010. Plus récemment, des distributions spécifiques de GNU Emacs sont apparues, telles que SpaceMacs[5], Doom Emacs[6] ou encore Emacs-Solo[7], offrant des expériences utilisateur enrichies grâce à des configurations prêtes à l'emploi et des interfaces modernisées.
Histoire
Résumé
Contexte

Emacs naquit au MIT AI Lab dans les années 1970. Sa naissance, ainsi que celle du projet GNU, est racontée en détails par son auteur, Richard Stallman, dans son livre Free as in Freedom[8]. Avant sa création, l'éditeur par défaut sur ITS, le système d'exploitation des ordinateurs PDP-6 et PDP-10 du l'AI Lab, était un éditeur ligne par ligne connu sous le nom de TECO, lui même né sur le PDP-1. Contrairement aux éditeurs de texte modernes, TECO traitait la saisie, l'édition et l'affichage du document comme des modes séparés, tel que vi le fit plus tard. La saisie de caractères dans TECO n'insérait pas les caractères directement dans le document ; il était nécessaire de donner une séquence d'instructions dans le langage de commande de TECO pour lui demander d'insérer les caractères souhaités. Pendant ce temps, le texte édité n'était pas affiché à l'écran. Ce comportement est similaire à celui du programme ed, toujours utilisé de nos jours.
En 1972 (ou 1974), Richard Stallman visite le Stanford AI Lab et voit l'éditeur E. Ce dernier dispose d'une interface WYSIWYG intuitive, comme celle qu'ont universellement adoptée tous les éditeurs modernes, à quelques exceptions très spécialisées près. Impressionné par cette fonctionnalité, Richard Stallman retourne au MIT, où Carl Mikkelsen, l'un des hackers de l'AI Lab, vient d'ajouter à TECO le mode édition-affichage appelé Control-R, qui rafraîchit l'écran à chaque fois que l'utilisateur appuie sur une touche. Stallman réécrit ce mode pour qu'il fonctionne efficacement, puis lui ajoute la possibilité d'exécuter des macros, ce qui permet à l'utilisateur de redéfinir n'importe quelle touche pour qu'elle exécute un programme TECO.

Cette nouvelle version de TECO est immédiatement populaire dans l'AI Lab, et une vaste collection de macros personnalisées est rapidement accumulée, ces dernières ayant bien souvent un nom se terminant par « MAC » ou « MACS », qui signifie « macros ». Deux ans plus tard, Guy Steele prend le projet d'unifier la trop grande diversité des jeux de commandes claviers en un jeu unique. Après une nuit de hacking entre Steele et Stallman, ce dernier termine le codage, qui inclut des facilités pour étendre et documenter le nouveau jeu de macros. Le système est alors appelé « EMACS », ce qui signifie « Editing MACroS » (« macros d'édition » en français). D'après Stallman, il a choisi le nom « Emacs car <E> ne servait pas d'abréviation sur ITS à ce moment. » Il a aussi été noté que « Emack & Bolio's » était le nom d'un marchand de crème glacée populaire à Boston, à quelques pas du MIT. Un programme de mise en forme de texte utilisé sur ITS a été plus tard appelé BOLIO par David Moon, qui fréquentait le marchand. Toutefois, Stallman n'aimait pas ces crèmes glacées, et ne les connaissait même pas quand il a choisi le nom « Emacs ».
Stallman réalise alors le danger d'une trop grande personnalisation possible et des forks de facto. Il pose certaines conditions à son utilisation, qu'il écrit plus tard :
« Emacs a été distribué sur la base du partage communautaire, ce qui signifie que toute amélioration doit m’être retournée afin d’être incorporée et redistribuée[9]. »
Implémentations d'Emacs

L'Emacs originel, tout comme TECO, ne fonctionnait que sur PDP-10. De nombreux Emacs ou assimilés ont ensuite été écrits dans les années suivantes pour d'autres systèmes informatiques, notamment SINE (SINE Is Not EMACS, « Sine n'est pas EMACS »), EINE (EINE Is Not EMACS) et ZWEI (ZWEI Was EINE Initially, « ZWEI était auparavant EINE ») pour la machine Lisp, qui ont été écrits par Michael McMahon et Daniel Weinreb (« eine » et « zwei » signifient « une » et « deux » en allemand). ZWEI deviendra ensuite Zmacs au début des années 1980.
En 1978, Bernard Greenberg écrit Emacs pour Multics au Cambridge Information Systems Lab de Honeywell. Multics Emacs est écrit en MacLisp, un dialecte de langage de programmation Lisp. Les extensions des utilisateurs sont également écrites en Lisp. Le choix de Lisp autorise une extensibilité jusque-là inconnue, et a été repris par de nombreux Emacs ultérieurs.
Bien qu'EMACS ait été conçu avec TECO, son comportement est suffisamment différent pour qu'il puisse être considéré comme un éditeur de texte à part entière. Il est rapidement devenu le programme d'édition standard sur ITS. Il a aussi été porté d'ITS vers les systèmes d'exploitation TENEX et TOPS-20 par Michael McMahon, mais pas tout de suite sur Unix. Le premier éditeur similaire à Emacs à fonctionner sur UNIX est Gosling Emacs développé par James Gosling en 1981. Il est écrit en langage C et son langage d'extension, Mocklisp, a une syntaxe très similaire au Lisp, mais n'a pas de liste ou d'autre type de donnée structuré. Gosling a en premier lieu permis de redistribuer Gosling Emacs sans restriction formelle, mais l'a vendu à Unipress Software en 1984, le rendant ainsi logiciel propriétaire.
Projet GNU
En 1984, Stallman commence à travailler sur GNU Emacs pour produire un logiciel libre comme alternative à Gosling Emacs. Basé à l'origine sur Gosling Emacs, Stallman a fini par remplacer l'interpréteur interne Mocklisp par un véritable interpréteur Lisp, ce qui a entraîné le remplacement de pratiquement tout le code. Il devient alors le premier programme distribué par le projet GNU naissant. GNU Emacs est écrit en C et fournit Emacs Lisp (lui-même écrit en C) comme langage d'extension. La première version largement distribuée de GNU Emacs est la 15.34, publiée en 1985 (les versions 2 à 12 n'ont jamais existé, les premières versions étaient numérotées 1.x.y, mais peu après la version 1.12, la décision d'abandonner le 1. a été prise, car il semblait établi que le numéro majeur ne changerait jamais. La version 13, la première distribuée publiquement, a été publiée le ). La version 16.56 est la plus ancienne dont le code source est encore disponible[10].
Tout comme Gosling Emacs, GNU Emacs fonctionne sur UNIX ; toutefois, GNU Emacs possède bien plus de fonctionnalités, particulièrement un environnement Lisp complet comme langage d'extension. De ce fait, il remplace bientôt Gosling Emacs comme éditeur Emacs de facto sur UNIX.
Fork
Démarré en 1991, Lucid Emacs a été développé par Jamie Zawinski ainsi que d'autres personnes de Lucid inc., en partant d'une version alpha de GNU Emacs 19. Les bases de codes ont rapidement divergé, et les deux équipes de développement ont abandonné les tentatives de fusion censées aboutir à un programme unique. Lucid Emacs a ensuite été rebaptisé XEmacs dans les années 1990. Une grande partie des apports de XEmacs ont depuis été intégrés dans GNU Emacs, conduisant à un essoufflement du projet dans les années 2010[11].
Autres éditeurs Emacs
Fonctionnalités
Résumé
Contexte
La richesse de fonctionnalités offerte par Emacs est le résultat d'une conception inhabituelle. Pratiquement toutes les fonctionnalités de l'éditeur, depuis les opérations d'édition de base comme l'insertion d'un caractère dans un fichier jusqu’à la configuration de l'interface utilisateur, sont contrôlées par le biais d'un dialecte du langage de programmation Lisp, appelé Emacs Lisp[12],[13]. Dans cet environnement Lisp, les variables et même les fonctions peuvent être modifiées à la volée, sans qu'il soit nécessaire de recompiler ou même de redémarrer l'éditeur. De ce fait, le comportement d'Emacs peut être changé presque sans limites, que ce soit par l'utilisateur, ou (plus généralement) en chargeant d'importantes portions de code, appelées libraries (« bibliothèques »), packages (« paquetages ») ou extensions[12].
Emacs dispose de plus de 10 000 commandes intégrées, toutes écrites en Emacs Lisp, et son interface permet à l'utilisateur de combiner ces commandes en macros pour les automatiser ou en créer de nouvelles[14]. Emacs inclut également un grand nombre d'applications elles aussi écrites en Emacs Lisp, et de nombreuses autres, indépendantes, peuvent être téléchargées via le MELPA, un dépôt en ligne permettant d’installer facilement des packages supplémentaires. Via les modes majeurs fournis par ces applications, Emacs peut ainsi être utilisé comme un environnement de développement intégré (EDI), permettant aux programmeurs de modifier, compiler et déboguer leur code depuis une unique interface. D'autres applications apportent des fonctions de gestion de projet, de développement ou d'organisation, par exemple :
- dap-mode, interface de débogage basée sur le Debug Adapter Protocol, permettant de tracer et inspecter le code dynamiquement via un débogueur externe (gdb, lldb)[15] ;
- Dired, un gestionnaire de fichiers flexible avec support de l’automatisation et de la manipulation de fichiers en masse[16] ;
- Ediff, pour travailler de manière interactive avec les fichiers de différences ;
- Emerge, pour comparer des fichiers et les fusionner ;
- Eww, un navigateur web, notamment utilisé par les clients mail ;
- Eshell, un shell Unix intégré programmable en Emacs Lisp[17] ;
- Exwm, un gestionnaire de fenêtres pour X.Org, permettant d'utiliser Emacs comme environnement de bureau[18] ;
- Gnus et mu4e, des clients mail complets[19] ;
- Helm/Ivy/Vertico/Selectrum, des systèmes d'auto-complétion et de sélection pour naviguer efficacement dans les fichiers et les commandes ;
- lsp-mode (Language Server Protocol), intégration native de LSP pour un support IDE avec complétion et aide contextuelle pour de nombreux langages[20];
- Magit, une interface Git intuitive et interactive[21] ;
- MULE, MUltiLingual extensions to Emacs, permettant l'édition de texte écrit dans plusieurs alphabets et plusieurs langues, semblable à Unicode ;
- Org, un système de gestion de l’information personnel, permettant de capturer, organiser et planifier des tâches, des notes et des projets[22] ;
- Org-roam, extension d'Org-mode pour créer une base de connaissance de notes interconnectées à la manière de Wikipédia ou d'un Zettelkasten[23];
- Projectile, un gestionnaire de de projets pour naviguer, compiler et gérer des projets complexes[24] ;
- Tramp, un module permettant d'éditer des fichiers distants via SSH, partages réseau et d’autres protocoles comme s’ils étaient locaux
D'autres applications plus insolites ont été développées pour Emacs en tant que plateforme, notamment des jeux[25], le premier système de gestion des courriels utilisateur chez Amazon[26], ou encore un système de contrôle aérien[27].

Un inconvénient initial de sa conception fondée sur Lisp était le surcoût en termes de puissance processeur pour charger et interpréter le code de ce langage. Sur les systèmes sur lesquels il a d'abord été développé, Emacs était souvent nettement plus lent que les éditeurs rivaux. Dans les années 1990, de nombreuses plaisanteries avec des acronymes y faisaient allusion : Eight Megabytes And Constantly Swapping (« huit mégas et rame continuellement », à l'époque où 8 Mo représentait beaucoup de mémoire, parfois toute celle de l'ordinateur), Emacs Makes A Computer Slow (« Emacs ralentit votre ordinateur »), et Eventually Mallocs All Computer Storage (« Finit par consommer toute la mémoire »)[28]. Toutefois, les ordinateurs modernes sont devenus assez rapides pour qu'il soit rare qu'Emacs paraisse lent. Il démarre d'ailleurs plus vite et consomme moins de ressources que la plupart des environnements de développement intégré modernes, particulièrement ceux basés sur Electron.js.
Depuis la version 30 parue en février 2025, GNU Emacs compile par défaut le code Elisp, ce qui améliore significativement les performances - de deux à quarante fois plus rapides qu'en mode interprété[29].
Sur Usenet, Emacs se vit autrefois affubler l'acronyme de Esc Meta Alt Control Shift allusion aux combinaisons au clavier, jugées peu intuitives, de son interface. Néanmoins, Emacs dispose d'un mode CUA permettant d'employer les traditionnels raccourcis IBM CUA[30] (ctrl-C, ctrl-X, ctrl-V ...), ainsi que d'un mode « evil » permettant d'employer les raccourcis vi[31].
Modes d'édition
Emacs adapte son comportement au type de texte en cours d'édition en passant d'un mode d'édition à un autre. Ces modes sont appelés modes majeurs[32]. Ils sont définis pour les fichiers de texte ordinaires, le code source de nombreux langage de programmation, les documents HTML, TeX, LaTeX, etc. Chaque mode majeur ajuste certaines variables Lisp d'Emacs pour qu'il se comporte de façon plus adaptée au type du fichier texte en cours d'édition. Les modes mettent notamment en œuvre la coloration syntaxique. Ils fournissent aussi des commandes d'édition particulières ; par exemple, les modes majeurs des langages de programmation définissent habituellement des commandes pour aller au début ou à la fin d'une fonction.

Le comportement d'Emacs peut être davantage personnalisé en utilisant des modes mineurs[33]. Alors qu'un seul mode majeur peut être associé à un texte donné, plusieurs modes mineurs peuvent être activés simultanément. Par exemple, le mode majeur pour le langage C définit un mode mineur pour chaque convention d'indentation. De même il existe un mode mineur pour afficher les parenthèses appariées qui peut être utilisé pour tout type de texte. Tous les modes d'édition, majeurs ou mineurs, sont implémentés dans Emacs sous la forme de modules écrits en Emacs Lisp. Ces paquets sont, soit directement intégrés dans le code source d'Emacs[34], soit disponibles via un dépôt de code source de type GNU ELPA, voire simplement téléchargeables via Internet.
Modes majeurs
Cette liste est non exhaustive. Il existe plusieurs centaines de modes majeurs, entre ceux inclus dans les distributions courantes d'Emacs et ceux que l'utilisateur peut ajouter par la suite.
Langages de programmation[35]
- Ada (ada-mode) ;
- Assembleur (asm-mode) ;
- Awk (awk-mode) ;
- C (c-mode) ;
- C++ (c++-mode) ;
- Clojure (clojure-mode) ;
- DSSSL (dsssl-mode) ;
- Elisp (emacs-lisp-mode) ;
- Fortran (fortran-mode) ;
- Go (go-mode) ;
- HTML (html-mode et html-helper-mode) ;
- Java (jde et java-mode) ;
- Javascript (js-mode) ;
- LaTeX (latex-mode) ;
- Lex (c-mode) ;
- Lisp (lisp-mode) ;
- Makefile (make-mode).
- Metafont (metafont-mode) ;
- OCaml (tuareg-mode) ;
- Pascal (pascal-mode) ;
- Perl (perl-mode) ;
- PHP (php-mode) ;
- Pike (pike-mode) ;
- PostScript (ps-mode) ;
- Prolog (prolog-mode) ;
- Python (python-mode) ;
- Ruby (ruby-mode)[34] ;
- Rust (rust-mode) ;
- Scala (scala-mode) ;
- Scheme (scheme-mode) ;
- SGML (psqml et sgml-mode) ;
- SQL (sql-mode) ;
- TeX (tex-mode) ;
- Tcl (tcl-mode) ;
- TypeScript (typescript-mode) ;
- XML (nxml-mode, psgml et xml-mode) ;
- XSLT (nxml-mode et xslide) ;
- Yacc (c-mode) ;
Courrier
- Rmail[36]. Application mail historique et client par défaut, principalement employée dans les années 1980 ;
- VM (ViewMail)[37]. Apparu dans les années 1990, à l'époque apprécié pour son support de POP3 et son interface plus riche que Rmail ;
- Gnus (gnus), apparu en 1994, longtemps l'application email phare sur Emacs, appréciée pour son support d'IMAP et des newsgroups ;
- Mu4e[38], apparu au début des années 2010, a commencé à gagner en traction vers la fin de la décennie comme alternative plus moderne et rapide que Gnus ;
- Notmuch[39], assez similaire à Mu4e, basé sur les tags plutôt que les dossiers IMAP pour la gestion des courriers électronique
Archives
- tar et tar.gz (tar-mode)
- zip, bzip2 et xz (archive-mode) ;
Autres
- Calc, calculatrice numérique puissante au format REPL
- Calendar-mode, un mode majeur pour gérer son emploi du temps ;
- Ediff (ediff)
- ERC, un client IRC
Personnalisation
Beaucoup d'utilisateurs personnalisent Emacs pour qu'il réponde à leurs besoins spécifiques. Il existe trois manières de personnaliser Emacs[13]. La première est l'extension customize, qui permet à l'utilisateur de fixer la valeur des variables communes de personnalisation, telles que le jeu de couleurs de l'interface graphique, ou de paramétrer des modes majeurs et mineurs de l'éditeur. Elle est prévue pour les utilisateurs débutant avec Emacs, qui ne veulent pas ou ne savent pas travailler en Lisp.
La deuxième manière consiste à collecter les séquences de touches en macros et de les rejouer pour automatiser les tâches pénibles et répétitives. Ces macros sont souvent créées pour l'occasion et détruites immédiatement après leur utilisation, bien qu'il soit possible de les enregistrer pour les invoquer plus tard.
La troisième méthode pour personnaliser Emacs est d'utiliser Emacs Lisp. Habituellement, le code Emacs Lisp produit par l'utilisateur est enregistré dans un fichier appelé .emacs, qui est chargé quand Emacs démarre. Le fichier .emacs est souvent utilisé pour fixer la valeur de variables et les raccourcis quand ils diffèrent des réglages par défaut, ou pour définir de nouvelles commandes que l'utilisateur juge utiles. Certains utilisateurs chevronnés possèdent un .emacs contenant plusieurs centaines de lignes, avec des personnalisations changeant considérablement le comportement par défaut d'Emacs.
Si une portion de code Emacs Lisp est utile à tous, elle est souvent mise dans une bibliothèque et distribuée aux autres utilisateurs. Il est possible de trouver de nombreuses bibliothèques sur Internet. Par exemple, la bibliothèque appelée wikipedia-mode permet d'éditer les articles Wikipedia. Il existe même un newsgroup Usenet permettant de poster les nouvelles bibliothèques gnu.emacs.sources. Certaines de ces bibliothèques finissent par faire leur chemin et deviennent des « bibliothèques standard » d'Emacs.
Documentation
Le premier Emacs a inclus une bibliothèque puissante appelée help, qui permet d'afficher la documentation de n'importe quelle commande, variable ou fonction interne. Pour cette raison, Emacs est décrit comme auto-documenté (ce qui ne signifie pas qu'il écrit sa propre documentation, mais qu'il est capable de la présenter à l'utilisateur). Cette fonctionnalité rend la documentation d'Emacs très accessible. Par exemple, l'utilisateur peut trouver la documentation à propos d'une séquence de touches en tapant simplement C-h k (qui exécute la commande describe-key) suivie de la séquence. Chaque fonction inclut une chaîne de documentation, spécialement prévue pour être affichée si l'utilisateur demande de l'aide à son sujet. De nos jours, différents langages de programmation utilisent un principe similaire (par exemple Lisp, Java ou Python).
Le système d'aide (help) d'Emacs n'est pas destiné qu'aux débutants. Il est également utile aux utilisateurs expérimentés qui écrivent du code Lisp. Si la documentation d'une variable ou d'une fonction est insuffisante, le système help permet de naviguer dans le code source Emacs Lisp des bibliothèques standards et indépendantes. De ce fait, il est très commode d'écrire des programmes en Emacs Lisp avec Emacs lui-même.
En plus du système d'aide intégré, Emacs possède un long manuel détaillé. Une copie (électronique) de GNU Emacs Manual, écrit par Richard Stallman, est incluse avec Emacs et peut être consultée avec le navigateur interne Info. XEmacs dispose d'un manuel similaire, résultat d'un fork du manuel de GNU Emacs datant du fork de XEmacs. Deux autres manuels, Emacs Lisp Reference Manual de Bill Lewis, Richard Stallman et Dan Laliberte, et Programming in Emacs Lisp de Robert Chassell sont aussi inclus. En plus de leur version électronique, tous ces manuels sont disponibles sous la forme de livres, publiés par la Free Software Foundation.
Emacs propose également un tutoriel intégré. Quand Emacs est démarré sans fichier à éditer, il affiche des instructions pour effectuer des tâches d'édition simple et pour invoquer le tutoriel.
Internationalisation
Emacs permet l'édition de textes écrits dans différentes langues. Il supporte plusieurs alphabets, écritures, systèmes d'écritures et conventions culturelles. Emacs est capable d'effectuer la vérification orthographique pour de nombreuses langues en faisant appel à des programmes externes, tel que ispell. De nombreux encodages de texte sont reconnus et utilisables, y compris UTF-8. XEmacs 21.5 et Emacs savent gérer intégralement Unicode. Toutefois, l'interface d'Emacs est en anglais et n'a pas été traduite dans d'autres langues.
Pour les utilisateurs mal- ou non-voyants, il existe un sous-système appelé Emacspeak, qui permet d'utiliser l'éditeur exclusivement au travers d'interactions sonores.
Plates-formes
Emacs est l'un des programmes informatiques non-triviaux les plus portés. Il fonctionne sur un grand nombre de systèmes d'exploitation, notamment la plupart des systèmes UNIX (GNU/Linux, les différents systèmes BSD, Solaris, AIX, Mac OS X, etc.), MS-DOS, Microsoft Windows et OpenVMS.
Emacs fonctionne à l'identique dans une console ou dans un environnement graphique. Sur les systèmes de type UNIX, Emacs utilise X Window System pour son interface graphique, soit directement, soit en faisant appel à une bibliothèque de widgets comme Motif, LessTif ou GTK+. Emacs est aussi capable d'utiliser les systèmes graphiques natifs de Mac OS X (grâce à l'API Carbon) et de Microsoft Windows. L'interface graphique propose des barres de menus et d'outils, des barres de défilement et des menus contextuels.
Licence
Le code source, que ce soit les composants C ou Emacs Lisp, est librement disponible pour être consulté, modifié et redistribué, sous les conditions de la GPL. Les anciennes versions de la documentation de GNU Emacs étaient publiées sous licence ad-hoc, qui requérait l'inclusion d'un texte particulier dans les copies modifiées. Par exemple, dans le manuel de l'utilisateur de GNU Emacs, ce texte indiquait comment obtenir GNU Emacs, ainsi que l'essai politique de Richard Stallman "Le Manifeste GNU". Les manuels de XEmacs, dérivés des manuels de GNU Emacs, ont hérité de la même licence. Depuis, les nouvelles versions de la documentation GNU Emacs utilisent la GFDL et font usage de la invariant section pour imposer l'inclusion des mêmes documents, ainsi que le fait que ces manuels s'auto-proclament GNU Manuals.
Utiliser Emacs
Résumé
Contexte
Commandes

Dans un shell UNIX, un fichier peut être ouvert pour le modifier en tapant emacs [nom_du_fichier]. Par exemple, emacs xorg.conf édite le fichier xorg.conf situé dans le répertoire courant, s'il existe. Si le fichier choisi n'existe pas, un buffer portant le nom du fichier est créé (et le fichier lui-même sera créé si ce buffer est sauvegardé). Toutefois, la documentation recommande de démarrer Emacs sans indiquer de fichier, pour éviter la mauvaise habitude de lancer des emacs distincts pour chaque fichier édité. Consulter tous les fichiers avec un unique Emacs est le meilleur moyen de tirer avantage de cet éditeur.
Dans le mode d'édition normal, Emacs se comporte comme la majorité des éditeurs de texte : les touches alphanumériques (A, B, C, 1, 2, 3, etc.) insèrent le caractère correspondant, les touches fléchées déplacent le curseur, Retour arrière efface des caractères, ainsi de suite. Les autres commandes sont invoquées avec des combinaisons de touches, en appuyant sur une touche principale en même temps qu'une touche alphanumérique. Chaque commande d'édition revient en réalité à appeler une fonction de l'environnement Emacs Lisp. Même une commande simple comme taper A pour insérer le caractère a provoque l'appel d'une fonction, en l'occurrence self-insert-command.
Le tableau suivant montre des commandes de base.
Commande | Combinaison de touches | Description |
---|---|---|
forward-word | méta + f ou alt + f | Aller à la fin du prochain mot |
search-word | Ctrl + s | Chercher un mot dans le tampon |
undo | Ctrl + / | Annuler la dernière modification, et les précédentes si appelé plusieurs fois |
keyboard-quit | Ctrl + g | Annuler la commande en cours |
fill-paragraph | méta + q ou alt + q | Ajuste les coupures de mot dans un paragraphe |
find-file | Ctrl + x puis Ctrl + f | Visiter un fichier (dont le nom est spécifié) dans son propre tampon |
save-buffer | Ctrl + x puis Ctrl + s | Enregistrer le tampon courant dans le fichier correspondant |
save-with-newname | Ctrl + x puis Ctrl + w | Enregistrer le tampon courant dans le fichier dont le nom est spécifié |
save-buffers-kill-emacs | Ctrl + x puis Ctrl + c | Proposer d'enregistrer les modifications puis quitter Emacs |
set-marker | Ctrl + espace | Poser la marque là où vous souhaitez couper ou copier |
cut | Ctrl + w | Couper tout le texte entre la marque et le curseur |
copy | méta + w ou alt + w | Copier tout le texte entre la marque et le curseur |
paste | Ctrl + y | Coller le texte contenu dans le presse-papier d'Emacs |
Les commandes save-buffer et save-buffers-kill-emacs utilisent une séquence de combinaisons. Par exemple, « Ctrl + x puis Ctrl + c » signifie : alors que la touche Ctrl reste enfoncée, appuyez sur la touche X ; puis, maintenant Ctrl enfoncé, appuyez sur C. Cette technique, permettant d'accéder à plus de commandes qu'il n'y a de touches sur le clavier, a été popularisée par Emacs, qui l'a repris de TECMAC, l'un des jeux de macros qui précéda légèrement Emacs. Elle est à présent utilisée dans certains éditeurs de texte récents, tel que celui de Visual Studio.
Quand Emacs fonctionne en mode graphique, de nombreuses commandes peuvent être invoquées depuis les barres de menus ou d'outils plutôt qu'avec le clavier. Toutefois, beaucoup d'utilisateurs expérimentés préfèrent utiliser le clavier, car il permet d'être plus rapide et est bien plus commode une fois les combinaisons de touches correspondantes mémorisées.
Certaines commandes Emacs fonctionnent en invoquant un programme externe (comme ispell pour la vérification orthographique, ou gcc pour la compilation des programmes), en analysant les données qu'il produit et en affichant le résultat dans Emacs.
Le minibuffer

Le minibuffer, habituellement la ligne du bas, est l'endroit où Emacs demande des informations lors de l'exécution de certaines commandes. Le texte à rechercher ou remplacer, le nom du fichier à lire ou à écrire et toutes les autres informations de cet ordre sont saisies dans le minibuffer. Quand il est possible, le complètement (avec la touche Tab) est généralement disponible.
Gestion des fichiers et affichage
Emacs mémorise le texte dans des objets appelés buffers (« tampon »). L'utilisateur peut créer de nouveaux buffers et supprimer ceux dont il ne se sert plus, plusieurs buffers pouvant exister simultanément. La plupart des buffers contiennent du texte chargé depuis un fichier texte, que l'utilisateur peut modifier puis enregistrer sur le disque. Les buffers permettent aussi de stocker temporairement du texte, comme les chaînes de documentation affichées par la bibliothèque help.
Dans le mode graphique comme en mode texte, Emacs est capable de partager la zone d'édition en plusieurs sections (appelées windows, « fenêtres », depuis 1975, ce qui peut être une source de confusion sur les systèmes possédant déjà le concept de fenêtre), de sorte que plusieurs buffers puissent être affichés en même temps. Parmi les utilisations : une section peut afficher le code source d'un programme, tandis qu'une autre montre le résultat de la compilation. Dans un environnement graphique, Emacs peut aussi gérer plusieurs fenêtres graphiques, qui sont alors désignées par le terme frame.
Orthographe
Certaines personnes font une distinction entre le mot capitalisé Emacs, qui permet de désigner les éditeurs dérivés des versions créées par Richard Stallman (en particulier GNU Emacs et XEmacs), et le mot en minuscule emacs, qui permet de désigner les nombreuses versions indépendantes d'Emacs.
Le pluriel anglais de emacs est habituellement emacsen, par analogie avec le pluriel oxen (signifiant « bœufs » en français, et dont le singulier est ox). La littérature française utilise tantôt emacsen et tantôt emacs.
Notes et références
Voir aussi
Wikiwand - on
Seamless Wikipedia browsing. On steroids.