# Référence rapide Emacs

*Navigation, édition, tampons, recherche, org mode, paquets*

> Source: GNU Emacs Manual (gnu.org/software/emacs) · MIT

## Navigation

### Déplacement du curseur

| Command | Description |
|---------|-------------|
| `C-f / C-b` | Avancer / reculer d'un caractère |
| `M-f / M-b` | Avancer / reculer d'un mot |
| `C-n / C-p` | Ligne suivante / précédente |
| `C-a / C-e` | Début / fin de ligne |
| `M-a / M-e` | Début / fin de phrase |
| `C-v / M-v` | Défiler vers le bas / haut d'une page |
| `M-< / M->` | Début / fin du tampon |
| `M-g g` | Aller à un numéro de ligne |

### Positionnement de l'écran

| Command | Description |
|---------|-------------|
| `C-l` | Recentrer l'écran (bascule haut/centre/bas) |
| `C-M-l` | Repositionner la fenêtre de façon heuristique |

## Édition

### Couper et coller (Kill & Yank)

| Command | Description |
|---------|-------------|
| `C-k` | Couper jusqu'à la fin de ligne |
| `C-w` | Couper la région (kill) |
| `M-w` | Copier la région |
| `C-y` | Coller (yank) |
| `M-y` | Parcourir le kill ring après un yank |
| `C-d` | Supprimer le caractère suivant |
| `M-d` | Couper le mot suivant |
| `M-DEL` | Couper le mot précédent |

### Annuler et transposer

| Command | Description |
|---------|-------------|
| `C-/ ou C-_` | Annuler |
| `C-g C-/` | Rétablir (annuler l'annulation) |
| `C-t` | Transposer les caractères |
| `M-t` | Transposer les mots |
| `C-x C-t` | Transposer les lignes |

### Sélection

| Command | Description |
|---------|-------------|
| `C-SPC` | Poser la marque (début de sélection) |
| `C-x h` | Sélectionner tout le tampon |
| `M-h` | Sélectionner le paragraphe |
| `C-x C-x` | Échanger le point et la marque |

## Tampons et fenêtres

### Tampons

| Command | Description |
|---------|-------------|
| `C-x b` | Changer de tampon |
| `C-x C-b` | Lister tous les tampons |
| `C-x k` | Fermer (tuer) le tampon |
| `C-x LEFT / RIGHT` | Tampon précédent / suivant |

### Fenêtres

| Command | Description |
|---------|-------------|
| `C-x 2` | Diviser la fenêtre horizontalement |
| `C-x 3` | Diviser la fenêtre verticalement |
| `C-x 0` | Fermer la fenêtre courante |
| `C-x 1` | Fermer toutes les autres fenêtres |
| `C-x o` | Passer à l'autre fenêtre |
| `C-x ^` | Agrandir la fenêtre verticalement |
| `C-x {` | Réduire la fenêtre horizontalement |

### Frames

| Command | Description |
|---------|-------------|
| `C-x 5 2` | Créer un nouveau frame |
| `C-x 5 0` | Supprimer le frame courant |
| `C-x 5 o` | Passer à l'autre frame |

## Recherche et remplacement

### Recherche incrémentale

| Command | Description |
|---------|-------------|
| `C-s` | Recherche vers l'avant (incrémentale) |
| `C-r` | Recherche vers l'arrière (incrémentale) |
| `C-s C-s` | Répéter la dernière recherche vers l'avant |
| `C-M-s` | Recherche par regex vers l'avant |
| `C-M-r` | Recherche par regex vers l'arrière |
| `RET` | Quitter la recherche à la position courante |
| `C-g` | Annuler la recherche et revenir au début |

### Remplacement

| Command | Description |
|---------|-------------|
| `M-%` | Remplacement interactif |
| `C-M-%` | Remplacement interactif par regex |
| `y` | Remplacer cette occurrence |
| `n` | Ignorer cette occurrence |
| `!` | Remplacer toutes les occurrences restantes |
| `q` | Quitter le remplacement |

## Fichiers

### Opérations sur les fichiers

| Command | Description |
|---------|-------------|
| `C-x C-f` | Ouvrir un fichier |
| `C-x C-s` | Sauvegarder le tampon courant |
| `C-x C-w` | Enregistrer sous (dans un nouveau fichier) |
| `C-x s` | Sauvegarder tous les tampons modifiés |
| `C-x C-r` | Ouvrir un fichier en lecture seule |
| `C-x i` | Insérer le contenu d'un fichier à la position |

### Dired (éditeur de répertoire)

| Command | Description |
|---------|-------------|
| `C-x d` | Ouvrir un répertoire dans Dired |
| `d / x` | Marquer pour suppression / exécuter les suppressions |
| `R` | Renommer / déplacer un fichier |
| `C` | Copier un fichier |
| `+` | Créer un répertoire |
| `g` | Rafraîchir la liste |

## Modes

### Modes majeurs

| Command | Description |
|---------|-------------|
| `M-x fundamental-mode` | Édition de texte brut |
| `M-x text-mode` | Texte avec remplissage et vérification orthographique |
| `M-x prog-mode` | Base pour les modes de programmation |
| `M-x python-mode` | Édition et indentation Python |
| `M-x shell-mode` | Shell interactif dans un tampon |

### Modes mineurs utiles

| Command | Description |
|---------|-------------|
| `M-x display-line-numbers-mode` | Afficher/masquer les numéros de ligne |
| `M-x auto-fill-mode` | Retour à la ligne automatique à la colonne de remplissage |
| `M-x flyspell-mode` | Vérification orthographique à la volée |
| `M-x column-number-mode` | Afficher la colonne dans la barre de mode |
| `M-x whitespace-mode` | Visualiser les espaces blancs |
| `M-x electric-pair-mode` | Fermeture automatique des parenthèses et guillemets |

## Bases d'Org Mode

### Structure

| Command | Description |
|---------|-------------|
| `* / ** / ***` | Niveaux de titre 1 / 2 / 3 |
| `TAB` | Basculer la visibilité du titre |
| `S-TAB` | Basculer la visibilité globale |
| `M-RET` | Insérer un titre au même niveau |
| `M-LEFT / M-RIGHT` | Promouvoir / rétrograder le titre |
| `M-UP / M-DOWN` | Déplacer le sous-arbre vers le haut / bas |

### TODO et cases à cocher

| Command | Description |
|---------|-------------|
| `C-c C-t` | Changer l'état TODO |
| `C-c C-d` | Définir une échéance |
| `C-c C-s` | Planifier un élément |
| `C-c C-c` | Cocher/décocher [ ] / [X] |
| `C-c a` | Ouvrir la vue agenda |

### Liens et export

| Command | Description |
|---------|-------------|
| `C-c C-l` | Insérer / modifier un lien |
| `C-c C-o` | Ouvrir le lien à la position |
| `C-c C-e` | Dispatcher d'export (HTML, PDF, etc.) |

## Gestion des paquets

### package.el

| Command | Description |
|---------|-------------|
| `M-x list-packages` | Parcourir les paquets disponibles |
| `i / d / x` | Marquer l'installation / suppression / exécuter |
| `U` | Marquer tous les paquets à mettre à jour |
| `M-x package-refresh-contents` | Rafraîchir la liste des paquets |

### use-package (init.el)

```
(use-package magit
  :ensure t
  :bind ("C-x g" . magit-status))
(use-package company
  :ensure t
  :hook (prog-mode . company-mode))
```

## Configuration

### Fichiers de configuration importants

| Command | Description |
|---------|-------------|
| `~/.emacs.d/init.el` | Fichier de configuration principal |
| `~/.emacs.d/early-init.el` | Initialisation précoce (avant GUI, Emacs 27+) |
| `~/.emacs.d/custom.el` | Paramètres écrits par Customize |

### Paramètres courants

```
(setq inhibit-startup-screen t)
(tool-bar-mode -1)
(set-face-attribute 'default nil :height 120)
(global-display-line-numbers-mode 1)
(setq make-backup-files nil)
```

### Système d'aide

| Command | Description |
|---------|-------------|
| `C-h k` | Décrire un raccourci clavier |
| `C-h f` | Décrire une fonction |
| `C-h v` | Décrire une variable |
| `C-h m` | Décrire les modes courants |
| `C-h t` | Ouvrir le tutoriel Emacs |
| `C-h i` | Ouvrir la documentation Info |

## Patterns courants

### Édition de rectangles

| Command | Description |
|---------|-------------|
| `C-x SPC` | Démarrer le mode de marque rectangulaire |
| `C-x r k` | Couper le rectangle |
| `C-x r y` | Coller le rectangle |
| `C-x r t` | Remplacer le rectangle par une chaîne |
| `C-x r o` | Insérer un rectangle vide |

### Macros

| Command | Description |
|---------|-------------|
| `C-x (` | Démarrer l'enregistrement de la macro |
| `C-x )` | Arrêter l'enregistrement de la macro |
| `C-x e` | Exécuter la dernière macro |
| `C-u 10 C-x e` | Exécuter la macro 10 fois |
| `M-x name-last-kbd-macro` | Nommer la macro pour réutilisation |

### Shell et évaluation

| Command | Description |
|---------|-------------|
| `M-x shell` | Ouvrir un shell dans un tampon |
| `M-x eshell` | Shell Emacs Lisp |
| `M-!` | Exécuter une commande shell |
| `M-x eval-buffer` | Évaluer tout le tampon comme Elisp |
| `C-x C-e` | Évaluer l'expression Elisp avant la position |
