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) :

  1. M-a, pour placer mon curseur au début au paragraphe;
  2. M-k, pour couper une paragraphe vers l’avant (l’inverse serait C-x <DEL>);
  3. M->, pour me rendre à la fin du document;
  4. 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é :

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.

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

Se déplacer dans un buffer

Chercher / Remplacer

Effacer

Sélectionner

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”.

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 …

À 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

Permutations

Auto-Complétion

Aide

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 :