K-7.ch

I'll be back

Pourquoi Emacs? (Première partie)


Emacs est, de loin, mon éditeur de code préféré. Dans cet article je vais passer en revue ce qui me plais dans ce logiciel, ou ce qui pourrait plaire à un informaticien. Ces écrits sont un peut long, aussi ils seront séparés en plusieurs parties. Cette partie couvrira les bases, l'édition de texte et l'usage du clavier.

Attention, il ne s'agit pas d'un cours sur Emacs, le but de cet article est d'en parcourir les atouts.

Quelques liens utiles:

Libre et multiplateforme

Un des premiers points intéressant avec Emacs, c'est qu'il est libre. Sous licence GPLv3. De plus, il est disponible sur GNU/Linux, MacOS, Windows, Android via Termux, FreeBSD, NetBSD, OpenBSD et Solaris.

Il peut autant fonctionner au travers d'un terminal qu'avec sa propre interface graphique. La version graphique à l'avantage de permettre l'affichage d'images, l'usage de la souris et fournit un menu ainsi qu'une barre d'outils.

Léger et modulaire

Initialement conçu pour traiter du texte depuis un terminal, Emacs est très léger et peu consommateur de ressources. Il tourne tout aussi bien sur des machines modernes qui sur de vieux modèles.

Emacs est avant-tout un éditeur de texte et de code source. Mais il propose également des fonctionnalités optionnelles qu'on retrouve dans un IDE comme la gestion de projet, générer du code, trouver la déclaration d'une fonction, etc.

100% clavier

On peut utiliser la souris avec Emacs dans sa version graphique, mais ce n'est absolument pas obligatoire. On peut utiliser 100% du logiciel sans lever les mains de son clavier.

Un grand nombre d'action sont disponibles par un simple raccourcis clavier. Par exemple, les touches dédiées du clavier, comme Home, End, les touches fléchées, etc. ont leur équivalents en raccourci sous la forme Ctrl + lettre.

En plus des fonctions de manipulation de texte, Emacs en fournit de spécifiques en fonction du contexte. Par exemple, si vous éditez du code en Python, Emacs vous propose de démarrer un interpréteur Python et d'y envoyer le code que vous êtes en train d'écrire. Autre exemple: si vous écrivez un e-mail, Emacs vous propose des fonctions pour ajouter des champs à celui-ci ou des pièces jointes.

Certaines fonctions peuvent être appelées avec un raccourcis clavier, mais toutes sont exécutables en tapant Alt-X + _nom_de_la_fonction_.

Tutoriel inclus

Emacs inclut un tutoriel dans plusieurs langues. Ce tutoriel est accessible dès le buffer d’accueil. Il vous expliquera les raccourcis clavier pour manipuler le texte, la structure d'Emacs, son système de modes et de fenêtres, etc.

Manipulation du texte

Emacs fournit les possibilités classiques de manipulation de texte, accompagnées de quelques plus:

  • Déplacement du curseur de texte d'un caractère, d'un mot, d'une ligne, d'une phrase, d'un paragraphe ou d'un écran, au début ou à la fin du fichier, à une ligne précisée par son numéro
  • Suppression d'un caractère, d'un mot, de la fin de la ligne ou de la phrase.
  • Inversion de deux lettres, deux mots ou deux lignes. En cas d'inversion de deux mots séparés par une ponctuation, celle-ci sera prise en compte.
  • Passer un mot en majuscule, minuscule ou le capitaliser.
  • Indenter automatiquement le code.
  • Commenter/décommenter une région.

Pour sélectionner du texte, il n'y a pas besoin de maintenir la touche Shift enfoncée. Il suffit de placer le curseur de texte au début de la zone à sélectionner, de taper Ctr-X Espace et la sélection est enclenchée. Pas besoin de maintenir la moindre touche. On peut ensuite bouger le curseur pour agrandir la zone sélectionnée, appelée Région dans Emacs. On peut faire sauter le curseur au début ou à la fin de la Région avec Ctrl-x Ctrl-x. Très pratique pour corriger une mauvaise sélection

On peut utiliser une région pour limiter l'action d'une fonction d'Emacs, comme par exemple "rechercher et remplacer" ou "commenter le code". On peut également exécuter une commande dans un shell (bash ou autre) en lui passent le texte sélectionné avec une région. Le texte ainsi sélectionné peut, si on le souhaite, être remplacé par le résultat de la commande.

Enfin, si Emacs permet une sélection classique, c'est à dire tous les caractères entre le début et la fin d'une région, il propose également d'utiliser les marqueurs de région pour "dessiner" un rectangle et ensuite de ne manipuler que les caractères se trouvant dans ce rectangle.

Exemple:

Démonstration de la sélection par rectangle

Kill-ring

Le presse-papier d'Emacs à une particularité: Quand on y place du texte, ce qui y était précédemment n'est pas perdu. On peut toujours le récupérer. Ainsi, quand on colle le contenu du presse-papier, c'est le dernier élément à y avoir été inséré qui apparait Ensuite, on peut remplacer dans le texte ce résultat par ce qui avait été précédemment déposé dans le presse-papier.

Par exemple, si j'ai le texte "À deux mains" dans le presse-papier et que j'y place le texte "dimanche valent mieux qu'une". Au moment de coller le contenu du presse-papier, j'obtiens "dimanche valent mieux qu'une". Avec un simple raccourcis clavier, je peux remplacer, dans mon texte, "dimanche valent mieux qu'une" par "À deux mains". Et je peux ainsi remonter l’historique du presse-papier. Dans cette historique, la fin est reliée au début, formant un anneau. D'où le nom "kill-ring".

Mark-ring

Emacs permet de placer des marqueurs où on le souhaite dans le texte que l'on manipule. On peut ensuite faire sauter le curseur de texte d'un marqueur à l'autre. Très pratique quand on souhaite revenir plus tard sur un bout de code.

Macro clavier

Emacs propose d'enregistrer ce que l'on tape au clavier en tant que macro. Il est possible ensuite de répéter ce qui a été enregistré autant de fois que l'on le souhaite. On peut même préciser combien de fois le répéter.

Lors de l'enregistrement d'une macro, un compteur peut être inséré dans le texte. On peut aussi donner un nom à cette macro pour l'appeler comme une fonction interactive et la sauvegarder pour qu'elle survive à la session. Il est aussi possible d'éditer une macro après enregistrement.

Fermeture automatique et mise en évidence des délimiteurs

Emacs peut automatiquement fermer des parenthèses ou des guillemets. Par exemple, si je tape ", Emacs écrira automatiquement la " fermante.

Si je sélectionne une région et que je tape un guillemet ou une parenthèse, Emacs entourera cette région avec le caractère choisi.

Et si je place le curseur de clavier à coté d'une parenthèse (ou d'un guillemet), alors sa parenthèse (ou guillemet) correspondante sera mise en évidence.

Ces 3 fonctionnalités ne sont malheureusement pas activées par défaut.

Conclusion de la première partie

Cette partie est loin de couvrir toutes les possibilités d'Emacs en matière d'édition de texte. C'est un logiciel très puissant dans ce domaine (et d'autres). Le seul logiciel à arriver à un tel niveau pour l'édition du texte est VI(M). Et encore, je ne suis pas sur que tout ce que permette Emacs soit possible avec VI(M).