# Emacs

Emacs est une famille d'éditeurs de texte disposant d'un ensemble extensible de fonctionnalités. Il est populaire parmi les programmeurs et plus généralement les personnes ayant des compétences techniques sur les ordinateurs.
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.
De nombreuses versions d'Emacs sont apparues dans les années suivantes, mais actuellement deux versions sont vraiment prépondérantes : GNU Emacs, initié en 1984 par Richard Stallman, qui y contribue aujourd'hui encore, et XEmacs, un fork de GNU Emacs débuté en 1991, qui restent en grande partie compatibles.
Ces deux versions utilisent un langage d'extension puissant, Emacs Lisp, qui permet la prise en charge de tâches évoluées, telles que l'écriture et la compilation de programmes, la navigation sur le web, la lecture des forums de discussion ou du courrier électronique.
Dans la culture UNIX, Emacs est traditionnellement l'un des deux belligérants de la guerre des éditeurs, son opposant étant vi (ou son équivalent amélioré Vim).

## Histoire

Emacs naquit au MIT AI Lab dans les années 1970. 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. 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. »

### 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). 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 20 mars 1985).
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. Il s'agit de l'un des forks les plus célèbres d'un logiciel libre. Lucid Emacs a depuis été rebaptisé XEmacs. Il reste, avec GNU Emacs, l'une des variantes d'Emacs les plus utilisées à ce jour.

#### Liste détaillée

* Liste des implémentations d'Emacs

## Fonctionnalités

La suite de cet article concerne principalement GNU Emacs et XEmacs, les deux variantes d'Emacs les plus largement utilisées actuellement. Le terme Emacs fait référence aux deux programmes, car leurs fonctionnalités sont très similaires. XEmacs a débuté comme un clone de GNU Emacs, et ses versions ultérieures sont restées plus ou moins compatibles avec GNU Emacs.
Grâce à, ou peut-être à cause de, son vénérable aïeul, Emacs est l'un des éditeurs de texte les plus puissants et les plus polyvalents. Il convient toutefois de rappeler qu'il s'agit avant tout d'un éditeur de texte, et non pas d'un traitement de texte. Ses très nombreuses fonctionnalités sont destinées à aider l'utilisateur à manipuler des morceaux de texte, plutôt que de manipuler des polices de caractères ou d'imprimer des documents (bien qu'Emacs en soit capable). Emacs propose une multitude de fonctionnalités pour accomplir la faussement simple tâche d'éditer du texte, depuis la manipulation des mots et des paragraphes (les effacer, les déplacer, s'y déplacer, etc.), jusqu’à la coloration syntaxique pour faciliter la lecture du code source, en passant par les macros au clavier, pour exécuter n'importe quelle séquence, interactive ou non, de commandes définies par l'utilisateur.
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. 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.
Emacs inclut un grand nombre de bibliothèques Emacs Lisp, et de nombreuses autres, indépendantes, peuvent être trouvées sur Internet. Beaucoup de bibliothèques proposent des facilités pour les programmeurs, reflétant la popularité d'Emacs parmi les informaticiens. Emacs peut ê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 bibliothèques ont des fonctions moins habituelles, par exemple :
* Calc, une calculatrice numérique performante ;
* Calendar-mode, pour gérer son emploi du temps ;
* Doctor, une version de ELIZA qui propose une psychothérapie Rogerienne basique ;
* Dunnet, un jeu d'aventure en mode texte ;
* Ediff, pour travailler de manière interactive avec les fichiers de différences ;
* Emerge, pour comparer des fichiers et les fusionner ;
* Emacs/W3, un navigateur web ;
* ERC, un client IRC ;
* Gnus, un client mail et news complet ;
* MULE, MUltiLingual extensions to Emacs, permettant l'édition de texte écrit dans plusieurs alphabets et plusieurs langues, semblable à Unicode ;
* Info, un navigateur hypertexte pour l'aide en ligne ;
* Tetris.
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 de texte rivaux. De nombreuses plaisanteries avec des acronymes y feront 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 »). Toutefois, les ordinateurs modernes sont devenus assez rapides pour qu'il soit rare qu'Emacs paraisse lent. Il démarre d'ailleurs plus vite que la plupart des traitements de texte modernes. Sur Usenet, Emacs se vit affubler l'acronyme de Esc Meta Alt Control Shift allusion aux combinaisons au clavier, jugées peu intuitives, de son interface.

### 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. 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. 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, 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

* Ada (ada-mode) ;
* Assembleur (asm-mode) ;
* Awk (awk-mode) ;
* C (c-mode) ;
* C++ (c++-mode) ;
* DSSSL (dsssl-mode) ;
* Elisp (emacs-lisp-mode) ;
* Fortran (fortran-mode) ;
* HTML (html-mode et html-helper-mode) ;
* Java (jde et java-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) ;
* Scala (scala-mode) ;
* Scheme (scheme-mode) ;
* SGML (psqml et sgml-mode) ;
* SQL (sql-mode) ;
* TeX (tex-mode) ;
* Tcl (tcl-mode) ;
* XML (nxml-mode, psgml et xml-mode) ;
* XSLT (nxml-mode et xslide) ;
* Yacc (c-mode) ;

##### Courrier

* Gnus (gnus) ;

##### Archives

* tar et tar.gz (tar-mode)
* zip et bzip2 (archive-mode) ;

##### Autres

* Ediff (ediff)
* Org-mode (org-mode)

### Personnalisation

Beaucoup d'utilisateurs personnalisent Emacs pour qu'il réponde à leurs besoins spécifiques. Il existe trois manières de personnaliser Emacs. 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
### 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.