Memento pour GNU Emacs

(version 20)

Démarrage d'Emacs

Pour appeler Emacs, taper simplement son nom (suivi de & sous X) : emacs
Pour lire un fichier à traiter, voir
Fichiers ci-dessous.

Quitter Emacs

suspendre Emacs (ou l'icônifier sous X)    C-z
sortir définitivement d'Emacs (en fin de session) C-x C-c

Notations

appui simultané sur les touches ctrl et t    C-t
appui simultané sur les touches Meta et t, ou appuis successifs sur les touches ESC et t M-t
appui simultané sur les touches Ctrl, Meta et t, ou appuis successifs de ESC et C-t    C-M-t
barre d'espacement    SPC
touche Return    RET
fournir l'argument arg à une commande    M-arg
argument universel (multiplicateur par 4)    C-u
bouton de gauche de la souris    mouse-1
bouton du milieu    mouse-2
bouton de droite    mouse-3
appui simultané sur la touche Shift et un bouton n    S-mouse-n

Utilisation de la souris

mettre le point (extrémité de région)    mouse-1
mettre la marque (autre extrémité) et copier dans le presse-papier    mouse-2
tuer depuis le point    mouse-3 mouse-3
récupérer le presse-papier ou le dernier élément tué et l'insérer    mouse-2

Dans tous les modes d'exploration (
courrier, Info, News, W3, calendrier, personnalisation, complétion, grep, messages d'erreur de compilation, etc.), mouse-2 sélectionne et ouvre le champ pointé.

menu des polices    S-mouse-1
menu des tampons (classés par type)    C-mouse-1
menu des propriétés du texte    C-mouse-2
menu propre au mode    C-mouse-3

Insertion

Le mode par défaut d'Emacs est l'insertion. Les caractères combinés avec C- et M- sont des commandes.

introduire tel quel le caractère qui suit    C-q
passer en mode remplacement (ou en sortir) M-x overwrite-mode

Rattrapage des Erreurs

avorter une commande en cours d'appel ou d'exécution    C-g
récupérer un fichier perdu après une panne M-x recover-file
défaire un changement non voulu    C-x u ou C-_
restaurer le contenu initial d'un tampon M-x revert-buffer
réafficher l'écran pollué    C-l

Appeler à l'Aide (menu Help)

Le système Help est simple (si vous lisez l'anglais !). Tapez C-h et suivez les instructions. Si vous êtes un utilisateur novice, tapez C-h t pour suivre un tutoriel. Ce memento suppose que vous connaissez le tutoriel.

se débarrasser de la fenêtre Help    C-x 1
dérouler la fenêtre Help    C-M-v
"à propos" : montrer les commandes conformes à une chaîne    C-h a
montrer toutes les liaisons de touches du tampon    C-h b
nommer la fonction appelée par une touche    C-h c
décrire le système de codage    C-h C
décrire une fonction donnée par son nom    C-h f
aller dans la page de manuel d'une fonction    C-h C-f
aller à la racine des manuels    C-h i
décrire la méthode d'entrée    C-h I
décrire la fonction appelée par une touche    C-h C-k
montrer les 100 derniers caractères tapés    C-h l
décrire l'environement de langage    C-h L
obtenir l'information spécifique du mode    C-h m
voir les dernières nouveautés d'Emacs    C-h n
trouver les paquetages contenant un mot-clef    C-h p
décrire la syntaxe    C-h s
décrire une variable    C-h v
nommer les touches liés à une fonction    C-h w

Info

entrer dans le mode à la racine (menu Info)    C-h i
trouver une fonction ou une variable dans les Infos    C-h C-i
Déplacement dans un noeud :
  avancer    SPC
  reculer    DEL
  début du noeud    .
Déplacement entre les noeuds :
  prochain noeud    n
  précédent noeud    p
  aller vers le haut    u
  choisir l'élément de menu par nom    m
  choisir le nième élément de menu (1-5)    n
  suivre une référence (retour avec 1)    f
  revenir au dernier noeud vu    l
  revenir au répertoire    d
  aller à un noeud donné par nom    g
Divers :
  appeler le tutoriel d'Info    h
  lister les commandes d'Info    ?
  quitter Info    q
  rechercher une expression régulière dans les noeuds    s

Fichiers (menu Files)

amener un fichier dans Emacs    C-x C-f
amener un fichier (lecture seulement) dans Emacs    C-x C-r
sauvegarder un fichier sur disque    C-x C-s
sauvegarder les fichiers à la demande    C-x s
insérer le contenu d'un autre fichier dans ce tampon    C-x i
remplacer ce fichier par celui que vous voulez en fait    C-x C-v
écrire le tampon dans un fichier spécifié    C-x C-w
supprimer l'indicateur de modification    M-~
entrer dans le mode de contrôle de version (ou en sortir)    C-x C-q

Tampons (menu Buffers)

choisir un autre tampon    C-x b
lister tous les tampons    C-x C-b
tuer un tampon    C-x k

Fenêtres Multiples (menu Files)

Quand il y a deux commandes, la seconde est pour l'autre cadre.

supprimer toutes les autres fenêtres    C-x 1
couper la fenêtre en deux superposées    C-x 2   C-x 5 2
supprimer cette fenêtre    C-x 0   C-x 5 0
couper la fenêtre en deux latérales    C-x 3
faire défiler l'autre fenêtre    C-M-v
passer à l'autre fenêtre    C-x o   C-x 5 o
amener un tampon dans l'autre fenêtre    C-x 4 b   C-x 5 b
voir un tampon dans l'autre fenêtre    C-x 4 C-o   C-x 5 C-o
lire un fichier dans l'autre fenêtre    C-x 4 f   C-x 5 f
voir un fichier dans l'autre fenêtre    C-x 4 r   C-x 5 r
composer du courrier dans l'autre fenêtre    C-x 4 m   C-x 5 m
appeler Dired dans l'autre fenêtre    C-x 4 d   C-x 5 d
trouver un index dans l'autre fenêtre    C-x 4 .   C-x 5 .
raccourcir la fenêtre M-x shrink-window
allonger la fenêtre    C-x ^
rétrécir la fenêtre    C-x {
élargir la fenêtre    C-x }

Mouvements

Mouvement du curseur :
  composant du mouvement en arrièreen avant
  caractère    C-b   C-f
  mot    M-b   M-f
  ligne    C-p   C-n
  début (ou fin) de ligne    C-a   C-e
  phrase    M-a   M-e
  paragraphe    M-{   M-}
  page    C-x [   C-x ]
  sexp    C-M-b   C-M-f
  fonction    C-M-a   C-m-e
  début (ou fin) de tampon    M-<   M->

Mouvement de l'écran :
  passer à l'écran suivant    C-v
  passer à l'écran précédent    M-v
  défiler vers la gauche    C-x <
  défiler vers la droite    C-x >
  centrer la ligne actuelle    C-u C-l
  n'afficher que les lignes décalés de moins de arg    arg C-x $

Marquer

placer la marque    C-@ ou C-SPC
échanger marque et point    C-x C-x
placer la marque arg mots au-delà    arg M-@
marquer le paragraphe    M-h
marquer la page    C-x C-p
marquer la sexp    C-M-@
marquer la fonction    C-M-h
marquer tout le tampon    C-x h

Tuer et Effacer (menu Edit)

composant du mouvement en arrièreen avant
caractère (effacer)    DEL   C-d
mot    M-DEL   M-d
ligne (vers le début ou la fin)    M-0 C-k   C-k
phrase    C-x DEL   M-k
sexp    M-- C-M-k   C-M-k
tuer la région    C-w
copier la région dans l'anneau d'efacement    M-w
tuer jusqu'à un caractère    M-z car
récupérer ce qui a été tué    C-y
remplacer la récupération par la précédente    M-y
effacer tous les blancs, tous sauf un    M-\, M-SPC

Recherche incrémentale (menu Search)

chercher en avant    C-s
chercher en arrière    C-r
chercher par expression régulière    C-M-s, C-M-r

Utilisez RET immédiatement après C-s ou C-r pour que la recherche soit non incrémentale. Utilisez C-s ou C-r à nouveau pour répéter la recherche dans l'une ou l'autre direction.

terminer la recherche incrémentale    RET
défaire l'effet du dernier caractère    DEL
avorter la recherche en cours    C-g

Si Emacs est en train de chercher, C-g annule la partie de la recherche non effectuée, sinon il annule toute la recherche.

Remplacer à la demande (menu Search)

remplacer à la demande une chaîne    M-%
avec une expression régulière M-x query-replace-regexp
Les réponses possibles dans ce mode sont :
  remplacer celui-ci, passer au suivant    SPC
  remplacer celui-ci sans bouger    .
  passer au suivant sans remplacer    DEL
  remplacer tous les suivants    !
  revenir au précédent    ^
  quitter le remplacement à la demande    RET
  commencer un traitement récursif (C-M-c pour terminer)    C-r

Dired, l'éditeur de répertoires

entrer dans le mode (menus spécialisés)    C-x d
  passer au fichier suivant    n, SPC, C-n
  passer au fichier précédent    p, DEL, C-p
  marquer un fichier    m
  marquer ce fichier pour effacement    d
  marquer les #fichiers# pour effacement    #
  marquer les fichiers~ pour effacement    ~
  enlever la marque d'effacement    u
  enlever la marque d'effacement et passer au fichier précédent    DEL
  effectuer les effacements    x
  lire le fichier dans cette fenêtre    RET, e
  lire le fichier dans l'autre fenêtre    o
  voir le fichier    v
  insérer un sous répertoire    i
  copier le fichier courant ou les fichiers marqués    C
  renommer le fichier courant ou les fichiers marqués    R
  trier par date (ou par nom)    s
  relire tous les répertoires    g
  demander de l'aide    h

Typographie

mot en majuscules    M-u
mot en minuscules    M-l
mot avec capitale initiale    M-c
région en majuscules    C-x C-u
région en minusciles    C-x C-l
région avec capitales initiales M-x capitalize-region

Présentation

décaler la ligne (selon le mode)    TAB
décaler la région (selon le mode)    C-M-\
décaler la sexp (selon le mode)    C-M-q
décaler la région de arg colonnes    arg C-x TAB
insérer une nouvelle ligne après le point    C-o
descendre le reste de la ligne    C-M-o
effacer les lignes blanches autour du point    C-x o
joindre cette ligne et la précédente    M-^
effacer les blancs autour du point    M-\
ne laisser qu'un espace autour du point    M-SPC
remplir le paragraphe    M-q
remplir la région    M-g
fixer la colonne de remplissage    C-x f
fixer le préfixe de ligne    C-x .

Le Mini-Tampon (menu Minibuffer)

Les touches suivantes sont définies dans le mini-tampon :
compléter autant que possible    TAB
compléter jusqu'au bout du mot    SPC
compléter et exécuter    RET
montrer les complétions possibles    ?
amener la commande précédente    M-p
ammener la commande suivante    M-n
chercher en remontant dans l'historique    M-r
chercher en descendant dans l'historique    M-s
avorter la commande    C-g

Taper C-x ESC ESC pour modifier et répéter la dernière commande utilisant le mini-tampon. Taper M-` pour activer le menu dans le mini-tampon.

Transposition

transposer des caractères    C-t
transposer des mots    M-t
transposer des lignes    C-x C-t
transposer des sexps    C-M-t

Dessins

entrer dans le sous-mode M-x picture-mode
revenir dans le mode normal    C-c C-c
écrire vers la gauche, la droite    C-c <, C-c >
écrire vers le haut, le bas    C-c ^, C-c .
écrire vers le nord-ouest, nord-est    C-c `, C-c '
écrire vers le sud-ouest, sud-est    C-c /, C-c \
tuer le rectangle    C-c C-k
copier le rectangle dans le registre et le tuer    C-c C-w R
récupérer le dernier rectangle tué    C-c C-y
récupérer le rectangle depuis le registre    C-c C-x R

Vérification Orthographique (menu Edit, sous-menu Spell)

vérifier l'orthographe du mot courant    M-$
vérifier l'orthographe de tous les mots d'une région M-x ispell-region
vérifier l'orthographe du tampon entier M-x ispell-buffer

Jeux de cractères internationaux (menu Mule)

choisir le langage principal M-x set-language-environment
montrer toues les méthodes d'entrée M-x list-input-methode
activer ou désactiver la méthode d'entrée    C-\
choisir le système de codage pour la commande suivante    C-x RET c
montrer tous les systèmes de codage M-x list-coding-system
choisir le système de codage préféré M-x prefer-coding-system

Index

trouver un index    M-.
trouver la prochaine apparition d'un index    C-u M-.
choisir un nouveau fichier d'index M-x visit-tags-table
recherche par expression régulière sur tous les fichiers d'une table d'index M-x tags-search
remplacer à la demande sur tous les fichiers M-x tags-query-replace>
continuer la dernière recherche ou le dernier remplacement    M-,

Shells

exécuter une commande du shell    M-!
exécuter une commande du shell sur la région    M-|
filtrer la région à travers une commande du shell    C-u M-|
exécuter un shell dans la fenêtre *shell* M-x shell
Les touches suivantes sont définies (menus spécialisés) :
  envoyer le signal d'achèvement    C-c C-c
  envoyer le signal de suspension    C-c C-z
  envoyer une fin de fichier    C-c C-d
  répéter la dernière commande    C-c C-y
  insérer la commande précédente    M-p
  insérer la commande suivante    M-s
  placer le point au début des derniers résultats    C-c C-r
  effacer les derniers ésultats    C-c C-o

Rectangles

copier un rectangle vers un registre    C-x r r
tuer un rectangle    C-x r k
récupérer un rectangle    C-x r y
ouvrir un rectangle en décalant le texte à droite    C-x r o
blanchir un rectangle    C-x r c
préfixer chaque ligne avec une chaîne    C-x r t

Abréviations

ajouter une abréviation globale    C-x a g
ajouter une abréviation locale    C-x a l
ajouter l'expansion globale de cette abréviation    C-x a i g
ajouter l'expansion locale de cette abréviation    C-x a i l
étendre cette abréviation    C-x a e
étendre dynamiquement le mot précédent    M-/

Expressions Régulières

Ce qui suit a une signification spéciale dans une expression régulière :
tout caractère    . (point)
zéro, une ou plusieurs fois    *
une ou plusieurs fois    +
zé:ro ou une fois    ?
caractère spécial ou sans signification c    \c
choix ("ou")    \|
groupement    \( ... \)
nième groupe    \n
entité débutfin
ligne    ^   $
mot    \<   \>
tampon    \`   \'
classe de caractères ceux-làles autres
ensemble explicite    [ ... ]   [^ ... ]
caractère de mot    \w   \W
caractère de syntaxe c    \sc   \Sc
coupure de mot    \b   \B

Registres

copier la région dans le registre    C-x r s
insérer le contenu du resgistre dans le tampon    C-x r i
garder le point dans le registre    C-x r SPC
amener le point à l'emplacement noté    C-x r j

Lecture des News

entrer dans le mode (menus spécilisés) M-x gnus
  lister tous les groupes    L
  lister les groupes suivis et contenant des articles non lus    l
  cesser de suivre un groupe    u
  cesser définitivement de suivre un groupe    C-k
  sélectionner le groupe ou l'article courant ou avancer dans l'article    SPC
  précédent groupe ou remonter dans l'article    DEL
  prochain groupe ou article    n
  précédent groupe ou article    p
  marquer le groupe comme entièrement lu    c
  quitter la lecture    q

Exploration du Web

entrer dans le mode (menus spécilisés) M-x w3
  avancer    SPC
  reculer    DEL
  début du document    <
  fin du document    >
  passer au prochain lien HTML    TAB
  passer au prochain lien HTML    S-TAB, M-TAB
  suivre un lien HTML    RET, mouse-2
  ouvrir un documet URL    C-o
  revenir au document précédent    l
  recharger le document    g
  quitter le mode    q

Lecture du Courrier avec Rmail

entrer dans le mode (menus spécilisés) M-x rmail
  avancer dans le message    SPC
  reculer dans le message    DEL
  début du message    .
  prochain message non effacé    n
  précédent message non effacé    p
  prochain message    M-n
  précédent message    M-p
  message de numéro donné    j
  dernier message    >
  premier message    <
  effacer le message    d
  effacer le message et reculer    C-d
  supprimer l'effacement du message    u
  effectuer les effacements    x
  répondre au message    r
  copier le message à quelqu'un d'autre    f
  envoyer un message    m
  lire le courrier nouvellment arrivé    g
  copier le message dans un autre fichier Rmail    C-o
  sommaire des en-têtes    h
  terminer Rmail    q

Lecture du Courrier avec Mh-e

entrer dans le mode (menu spécialisé) M-x mh-rmail
Les commandes sont similaires à celles de Rmail, sauf ce qui suit :
  lire le courrier nouvellement arrivé    i
  refaire la liste des messages    M-r
  déplacer le message dans un autre classeur    o, ^
  dire dans quel classeur le message doit aller    ?
  changer de classeur    M-f

Écriture du Courrier avec Rmail

composer un message    C-x m
ajouter au champ du sujet    C-c C-f C-s
ajouter au champ des destinataires    C-c C-f C-t
ajouter au champ des destinataires secondaires    C-c C-f C-c
ajouter au champ des destinataires aveugles    C-c C-f C-b
insérer le fichier $HOME/.signature en fin de message    C-c C-w
insérer une copie du message auquel on répond    C-c C-y
insérer une copie de la région du message auquel on répond    C-c C-r
envoyer le message    C-c C-s
envoyer le message et quitter l'écriture    C-c C-c

Écriture du Courrier avec Mh-e

composer un message M-x mh-smail
Les commandes sont les mêmes que pour Rmail, sauf ce qui suit :
vérifier la liste de destinataires    C-c C-w
insérer un message    C-c C-i
insérer le fichier $HOME/.signature en fin de message    C-c C-s

Calendrier et Agenda


Transfer interrupted!

u jour
entrer dans le mode (menus spécialisés) M-x calendar
  composant du mouvement en arrièreen avant
  jour    C-b   C-f
  semaine    C-p   C-n
  mois    M-{   M-}
  décaler d'un mois    C-x >   C-x <
  décaler de trois mois    M-v   C-v
  année    C-x [   C-x ]
  composant du mouvement débutfin
  semaine    C-a   C-e
  mois    M-a   M-e
  année M-<   M->
aller à une date    g d
centrer autour d'un mois    o
aller à la date courante    .
nombre de jours de la région    M-=
place du jour dans l'année    p d    h
entrées du jour dans l'agenda    d
afficher tout l'agenda    s
marquer les dates avec une entrée dans l'agenda    m
ajouter une entrée dans l'agenda pour cette date    i d
ajouter une entrée dans l'agenda pour ce jour de la semaine    i w
ajouter une entrée dans l'agenda pour ce jour du mois    i m
ajouter une entrée dans l'agenda pour ce jour de l'année    i y
ajouter un anniversaire pour cette date    i a
ajouter une entrée pour un bloc de dates    i b
ajouter une entrée périodique    i c
heures de lever et de coucher du soleil    S
phases de la lune pour les trois mois en cours    M
faire défiler l'autre fenêtre    SPC
quitter le calendrier    q

Compilation et déboguage (menu Tools)

lancer une compilation asynchrone M-x compile
lancer un grep asynchrone M-x grep
lancer un grep récursif asynchrone M-x grep-find
visiter le lieu du prochain message    C-x `
visiter le lieu de ce message    RET, mouse-2
commencer le déboguage d'un programme M-x gdb
  placer un point d'arrêt    C-x SPC
  enlever un point d'arrêt    C-c C-d
  exéter une ligne de code    C-c C-s
  reprendre l'exécution    C-c C-r

Divers (menu Tools)

imprimer le tampon M-x print-buffer
imprimer la région M-x print-region
imprimer le tampon en Postscript M-x ps-print-buffer
imprimer la région en Postscript M-x ps-print-region
trier les lignes de la région M-x sort-lines
trier les lignes de la région par champs M-x sort-fields
trier les lignes de la région par colonnes M-x sort-columns
rétrécir le tampon à la région    C-x n n
rétrécir le tampon à la defun    C-x n d
rétrécir le tampon à la page    C-x n p
ramener au tampon entier    C-x n w
calculateur algébrique    M-#

Macros

début de la définition d'une macro    C-x (
fin de définition d'une macro    C-x )
exécuter la dernière macro définie    C-x e
ajouter à la fin de la dernière macro    C-u C-x (
nommer la dernière macro M-x name-last-kbd-macro
insérer une définition dans le tampon M-x insert-kbd-macro

Commandes concernant Emacs Lisp

évaluer la sexp avant le point    C-x C-e
évaluer la defun courante    C-M-x
évaluer la région M-x eval-region
évaluer le tampon entier M-x eval-current-buffer
lire et évaluer le mini-tampon    M-:
ré-exécuter la dernière commande de mini-tampon    C-x ESC ESC
lire et évaluer un fichier Emacs Lisp M-x load-file
charger depuis le répertoire standard M-x load-library

Personnalisation Simple

personnalisation des variables et des faces M-x customize

Personnalisation manuelle : voici quelques exemples de liaisons globales de touches en Emacs Lisp.
Notez que vous ne pouvez pas écrire "M-#" ; vous devez écrire "\e#".

(global-set-key "\C-cg" 'goto-line)
(global-set-key "\e\C-r" 'isearch-backward-regexp)
(global-set-key "\e#" 'query-replace-regexp)


Exemple d'affectation de variable :
(set backup-by-copying-when-linked t)

Écriture de Commandes

(defun <nom-de-commande> (<arguments>)
  "
<documentation>"
  (interactive "
<modèle>")
  
<corps>)

Exemple :

(defun cette-ligne-en-haut-d-ecran (line)
  "Déplace la ligne sur laquelle est le point en haut d'écran.
Avec ARG, place le point sur la ligne ARG.
Les comptes négatifs partent du bas."
  (interactive "P")
  (recenter (if (null line)
                0
                (prefix-numeric-value line))))
L'argument de interactive est une chaîne qui spécifie comment obtenir les arguments de la fonction si elle est appelée interactivement. Tapez C-h f interactive pour plus d'
information.