Emacs 101 – l'introduction
Apprendre Emacs peut être perçu comme quelque chose de difficile. Pour ma part, je ne considère pas cela comme difficile, non. Mais cela demande certainement du temps.
Premièrement, il faut du temps pour découvrir cet envrionnement et apprendre les concepts qui le compose. Il faut aussi du temps pour connaître par coeur les commandes de base. Notre tête et nos doigts doivent s'y habituer pour sortir du joug de la souris. Car c'est bien cela l'avantage de maîtriser son éditeur texte : gagner en productivité.
Et passer moins de temps à faire des aller-retours entre la souris et le clavier apporte définitivement un gain en productivité.
Comme par exemple, si je veux sélectionner un paragraphe, le couper et
le coller à fin du document. Je peux utiliser le clavier et la souris
… ou seulement la souris. Toutefois avec Emacs je ferais la série de
commandes suivantes (C-
correspond à la touche Ctrl
et M-
correspond à la touche Alt
) :
M-a
, pour placer mon curseur au début au paragraphe;M-k
, pour couper une paragraphe vers l'avant (l'inverse seraitC-x <DEL>
);M->
, pour me rendre à la fin du document;C-y
, pour finalement coller le paragraphe.
Dans les premiers temps ce type de séquence vous paraîtra beaucoup moins efficace que vos anciennes habitudes, mais si vous persévérez dans l'apprentissage d'Emacs, après quelques semaines vous exécuterez ce genre de tâche avec rapidité et fluidité.
Selon-moi le meilleur moyen d'apprendre les commandes de base, est de suivre le
tutoriel officiel qui est directement intégrer dans Emacs. Pour y
accéder, tapez M-x
, puis entrez la commande
help-with-tutorial-spec-language
; un choix de langue vous sera
offert.
Ce tutoriel interactif vous apprendra les bases pour atteindre le bonheur et le confort dans votre nouvel éditeur texte préféré :
- Démarrer et fermer Emacs.
- Les commandes de bases pour vous déplacer dans le texte et l'éditer.
- Ouvrir et sauvegarder des fichiers.
- Les concepts qui composent Emacs : windows, frames, files, buffers, etc.
- Invoquer des fonctions avec la commande
M-x
. - Etc.
Buffers, windows et frames
Avant d'enter dans les commandes de déplacement et d'édition, je crois qu'il faut d'abord que je vous explique ce qu'est un buffer, une window et un frame. Ces concepts sont parfois un peu déroutant pour le nouveau venu dans Emacs …
Buffers
Premièrement, on peut avoir plusieurs buffers ouverts en même temps. Habituellement un buffer représente le contenu d'un fichier, mais il peut être aussi de l'information en provenance de l'application, comme par exemple le buffer Messages, toujours présent à l'ouverture d'Emacs.
Les buffers sont visibles travers les fenêtres (windows). Pour passer
à un autre buffer et l'afficher dans la fenêtre courante vous devez
faire la commande C-x b
. Cela a pour conséquence de déplacer le
curseur vers le minibuffer et d'afficher un message qui ressemble
à “Switch to buffer (default scratch)”.
À partir de là, vous pouvez taper le nom du buffer vers lequel vous
voulez basculer. Pour afficher la liste de ceux qui sont ouverts
appuyez sur la touche Tab
.
Pour quitter le minibuffer, annuler la commande en cours et retourner
le curseur dans le buffer faîtes C-g
.
Il est aussi possible de lister directement tous les buffers qui sont
actifs en tapant C-x C-b
.
Windows et frames
Dans Emacs une fenêtre (window) n'est pas une fenêtre comme on l'entend dans un contexte de système d'exploitation; dans ce cas on parlerait plutôt d'un cadre (frame). La fenêtre est une vue sur un buffer, et il est possible d'avoir plusieurs fenêtres dans un seul cadre, ce qui permet d'afficher de multiple buffers en même temps.
Bien sûr il y des commandes pour créer ou supprimer des fenêtres, se déplacer dans chacune d'elle, modifier leur taille, etc.
- Nouvelle fenêtre horizontale :
C-x 2
. - Nouvelle fenêtre verticale :
C-x 3
. - Fermer toutes les fenêtres sauf la fenêtre courante :
C-x 1
. - Fermer la fenêtre courante :
C-x 0
. - Naviguer d'une fenêtre à l'autre :
C-x o
.
Si vous voulez un nouveau cadre et non une nouvelle fenêtre, la
commande est C-x 5 2
.
Minibuffer
Le minibuffer quant à lui est l'espace, sous la barre de status, où vous interagissez avec Emacs : entrer une commande, donner un valeur à un argument, recevoir de l'info, etc. Dans le minibuffer vous avez accès aux mêmes fonctionnalités que dans n'importe quel buffer.
Rappel : Pour quitter le minibuffer, annuler la commande en cours et
retourner le curseur dans le buffer faîtes C-g
.
Les commandes de base
Voici une liste des commandes que vous devez maîtriser pour être efficace dans Emacs. Il est aussi intéressant de savoir que, plusieurs commandes Emacs de base fonctionneront dans n'importe quel terminal Linux ou BSD. Donc en les apprenant, vous devenez également un meilleur utilisateur UNIX.
D'abord, rappelons que C-
correspond à la touche Ctrl
et que M-
correspond à la touche Alt
. Donc C-k
est semblable à Ctrl + k
.
Ouvrir, créer, sauvegarder et fermer des buffers
- Ouvir ou créer un fichier :
C-x C-f
. - Sauvegarder le buffer courant :
C-x C-s
. - Sauvegarder tous les buffers ouverts :
C-x s
. - Enregistrer-sous :
C-x C-w
. - Fermer un buffer :
C-x k
.
Se déplacer dans un buffer
- Caratère suivant :
C-f
. - Caratère précédent :
C-b
. - Ligne suivante :
C-n
. - Ligne précédente :
C-p
. - Début d'une ligne :
C-a
. - Début d'une ligne indentée :
M-m
. - Fin d'une ligne :
C-e
. - Mot suivant :
M-f
. - Mot précédent :
M-b
. - Phrase précédente :
M-a
. - Phrase suivante :
M-e
. - Page précédente :
M-v
. - Page suivante :
C-v
. - Début du buffer :
M-<
. - Fin du buffer :
M->
. - Aller à une ligne en particulier :
M-g g
.
Chercher / Remplacer
- Recherche vers la fin du fichier :
C-s
(répéter la commande pour l'occurrence suivante). - Recherche vers le début du fichier :
C-r
(répéter la commande pour l'occurrence précédente). - Remplacer :
M-%
, y
pour remplacer la correspondance en cours;n
pour aller à la prohcaine correspondance sans remplacer;q
pour sortir du processus de remplacement courant;.
pour remplacer la correspondance en cours puis quitter le processus;!
pour tout remplacer sans aucune autre question.- Chercher dans plusieurs fichiers :
M-x rgrep
.
Effacer
- Effacer le mot suivant :
M-d
. - Effacer le mot précédant :
M-Backspace
.
Sélectionner
- Indiquer le début (point) d'une sélection (mark) :
C-Spacebar
. - Sélectionner tout le paragraphe :
M-h
. - Sélectionner tout le buffer :
C-x h
. - Sélectionner une fonction :
C-M-h
. - Modifier une sélection :
C-x C-x
.
Notez que l'on peut faire des actions spécifiques à une région qui est marquée. Ex.: Des undo, des trouver/remplacer, des recherches, etc.
Couper / Copier / Coller
Dans le jargon Emacs les termes couper et coller sont remplacé par “kill” et “yank”.
- Couper :
C-w
. - Copier :
M-w
. - Coller :
C-y
. - Couper une ligne :
C-k
. - Couper une phrase (vers l'avant) :
M-k
. - Couper une phrase (vers l'arrière) :
C-x <DEL>
. - Couper une région :
C-w
.
Emacs garde en mémoire tout ce qui a été couper et copier et lorsque
vous collez vous avez accès à cet historique. Pour cela il suffit de
coller une première fois avec C-y
, puis ensuite faire M-y
pour
coller l'item de l'historique suivant. Cette “mémoire” se nomme kill
ring. Cette fonctionnalité est une particularité très puissante et
très utile de Emacs.
Undo
Il y a trois combinaisons possibles pour invoquer la fonction undo …
- Undo :
C-x u
ouC-/
ouC-_
.
À la base Emacs n'offre pas de fonction “redo” je crois. Mais il y a une extension qui s'appelle undo-tree qui étend les fonctionnalités de base à ce niveau.
Changements de casse
- Premier caractère en majuscule :
M-c
. - Mot en majuscule :
M-u
. - Mot en minuscule :
M-l
.
Permutations
- Intervertir deux lettres :
C-t
. - Intervertir deux mots :
M-t
. - Intervertir deux lignes :
C-x C-t
.
Auto-Complétion
- Auto-complétion d'un mot se trouvant déjà dans un buffer :
M-/
.
Aide
- Tutorial Emacs :
F1 t
. - Documentation :
F1 r
. - Description d'une commande :
F1 k
ouC-h k
. - Description d'une fonction :
F1 f
ouC-h f
.
Conclusion à cette introduction
Vous vous doûtez bien qu'il s'agit ici que d'un survol très sommaire des commandes et des fonctionnalités d'Emacs. D'autres billets viendront complétés celui-ci, en choisissant d'explorer des aspects plus précis.
Ceci dit, j'espère que vous allez essayer et aimer Emacs. Au départ, je vous suggère d'expérimenter et appliquer les notions que vous avez apprisent dans des fichiers de configuration ou sur des projets personnels, avant d'en faire votre éditeur de tous les jours … Si vous percévérez vous ne pourrez plus vous en passer.
Lire la suite de ce billet :