Go to Hackademy website

Introduction à Emacs

Nicolas Cavigneaux

Posté par Nicolas Cavigneaux dans les catégories outils

Il y a quelques jours, j’ai fait une présentation en interne de l’éditeur de texte que j’utilise au quotidien. Faisant quasiment tout dans Emacs, mes collègues souhaitaient découvrir cet outil.

La présentation semble avoir été réellement appréciée, des installations d’Emacs s’en sont même suivies !

J’ai donc décidé de regrouper les informations distillées pendant cette présentation pour en faire un article et vous en faire profiter.

Emacs, pour quoi faire ?

Emacs est un éditeur libre et gratuit, extensible, paramétrable et bien plus encore. Emacs est auto-documenté, tout ce que vous pouvez faire dans Emacs possède une documentation, chaque variable, chaque fonction, chaque raccourci de déplacement. Si vous vous posez une question sur un raccourci clavier, il possède de la documentation directement depuis l’éditeur.

Emacs possède un tutoriel qui vous permettra de mettre le pied à l’étrier. Il vous explique son fonctionnement tout en vous faisant parcourir et éditer un fichier texte. Il est accessible via C-h t.

Emacs est capable d’accomplir toutes les tâches que vous pouvez vouloir faire avec un éditeur moderne : linting, détection de code smell, correction orthographique, compilation, recherches avancées, macros, fenêtrage, …

Une fois Emacs lancé, quelqu’un qui le maitrise peut quasiment passer sa journée sans en sortir et y effectuer toutes ses tâches.

Emacs est une valeur sûre, il existe depuis 30 ans, il est maintenu par une communauté active et n’est pas prêt de disparaitre. En capitalisant dessus, vous vous assurez que vous pourrez encore vous en servir dans 20 ans tout en conservant vos habitudes.

Parcourir et éditer des fichiers est un élément central de notre travail, il n’est donc pas du tout aberrant de mettre plusieurs mois à maîtriser parfaitement son outil si on peut s’en servir pendant les 20 prochaines années pour gagner du temps au quotidien.

C’est bien tout ça, mais qu’est qu’on peut faire avec ? La liste est longue à vrai dire puisqu’on peut pratiquement tout faire depuis Emacs :

  • planning de projets
  • TODO lists
  • GTD
  • Agenda / Calendrier
  • Lecture / envoie de mail (avec support du chiffrage, des identités multiples, serveurs multiples, filtrage avancé, …)
  • News / RSS reader
  • UI pour debugger
  • Presentations / Slides
  • IRC / Gitter
  • Gestionnaire de fichiers
  • Gestionnaire de process
  • Lancer des commandes terminal
  • Émulateur de terminal
  • Visualisation des diffs
  • Outil de gestion des conflits de merge
  • UI unifié pour les VCS
  • tetris, doctor, hanoi
  • Éditeur…

Installation typique sous OS X

Pourquoi sous OS X ? Parce que c’est l’OS que j’utilise tout simplement et que je peux donc en parler en connaissance de cause. Pour les autres systèmes, votre gestionnaire de paquets vous offre sans aucun doute un paquet adapté.

Pour avoir un Emacs pleinement fonctionnel et bien intégré sous OS X, voici la meilleure façon de l’installer :

$ brew install emacs --with-cocoa --with-dbus --with-imagemagick --with-librsvg --with-mailutils
$ brew install gnutls
$ brew install aspell --with-lang-fr --with-lang-en

Vous aurez donc un Emacs avec le support de Cocoa et notamment de l’affichage / traitement des images directement dans l’éditeur.

On installe ensuite gnutls pour pouvoir contacter des hôtes distants en HTTPS, puis Aspell afin d’avoir de la correction orthographique pour le français et l’anglais.

Démarrer Emacs

Rien de bien particulier à ceci près que vous pouvez lancer Emacs en mode démon ce qui accélère le temps de chargement des autres clients que vous lancerez par la suite et que ça leur permettra de communiquer entre eux (partage de configuration, de buffers, etc).

En ce qui me concerne, le démon se lance au démarrage de ma session et j’utilise ensuite le client pour lancer Emacs soit dans le terminal :

$ emacsclient -t

Soit en mode GUI :

$ emacsclient -c

Il peut donc être intéressant de créer quelques alias pour vous faciliter la vie :

alias e=emacsclient -t
alias ec=emacsclient -c

Padawan path to configuring your Emacs

Les utilisateurs aguerris ont tendance à configurer leur Emacs de A à Z en Elisp dans leur fichier .emacs.d/init.el. C’est le chemin le plus difficile quand on débute puisqu’il faut découvrir les modes / packages qui nous intéressent puis les paramétrer pour qu’ils collent à nos préférences en définissant des variables, en appelant des fonctions, etc. C’est le meilleur moyen d’avoir un Emacs aux petits oignons mais que je déconseille aux débutants puisque ça peut vite devenir décourageant / chronophage. Seuls les plus motivés passeront par là.

Une solution intermédiaire est de passer par l’outil de configuration intégré / graphique de configuration. Tous les paquets / modes peuvent être configurés via un outil qui présente toutes les options disponibles, leur fonction ainsi que les valeurs possibles. Pour accéder à cet outil, il suffit de faire un :

M-x customize

M correspond à la touche meta qui par défaut est Alt, perso je l’ai rebindé sur Cmd parce que j’ai besoin de mon Alt pour entrer des caractères spéciaux.

Une fois cette commande lancée, un buffer vient présenter les différentes sections disponibles, on peut naviguer au clavier ou encore à la souris (sik). Chaque section présentera des sous-sections plus spécifiques jusqu’à arriver aux variables de configuration à proprement parler.

Écran Customize

Sous-écran Customize

Je vous laisse découvrir, vous pouvez y passer la journée si vous voulez faire le tour. Absolument tout est configurable, de l’apparence, à la gestion des tabulations, de l’ajout de retour à la ligne en fin de fichier, la complétion, les réglages par langage, etc.

Les distributions prêtes à l’emploi

Si vous voulez rapidement avoir un environnement «prêt à l’emploi» qui même s’il ne vous convient pas à 100% vous permettra d’avoir un setup assez bien pensé pour pouvoir travailler sans avoir à vous poser trop de questions, vous pouvez utiliser une des deux distributions phares.

Prelude

La première, Prelude, respecte l’esprit originel d’Emacs, il va simplement charger les paquets indispensables et les configurer au mieux pour une utilisation standard. C’est la distribution que je conseille aux nouveaux venus sous Emacs qui n’ont pas fait un crochet par Vim avant.

Par défaut tous les modules disponibles (langages, completion, etc), ne sont pas activés. Il vous faut les dé-commenter selon vos besoins.

Vous pouvez consulter la liste des raccourcis clavier ajoutés par Prelude.

Comme toujours avec Emacs, si quelque chose ne vous convient pas, vous pouvez le modifier dans votre fichier de configuration pour l’adapter à vos besoins.

Spacemacs

La deuxième, Spacemacs, est elle un remaniement assez radical de la façon dont fonctionne Emacs. Emacs devient modal et utilise l’édition à la Vim (99% de ce qui est utilisable dans Vim le devient dans Emacs). Le lancement des commandes est lui aussi revu. Plus question de passer par des raccourcis du type C-x r l ou M-x calendar. Tout se passe en mode normal grâce au leader space, la touche espace, qui permet de passer en mode commande et qui classe les différentes possibilités sous des raccourcis mnémoniques. C’est la distribution que je recommande aux débutants sous Emacs qui viennent de Vim. Ils ne seront pas perdu pour l’édition.

Vous pouvez lire la documentation condensée qui résume bien l’esprit et les buts de cette distribution.

L’activation ou non de fonctionnalités se fait par la notion de layers. Un layer va activer un ensemble de fonctionnalités pour un besoin précis (un langage, la complétion, une application comme IRC, le pair-programming). Vous pouvez consulter la liste des layers disponibles directement sur le site.

Cette distribution peut-être installée en deux versions, une complète avec la majorité des layers déjà activés ou une version dite de base qui n’installera que le minimum vital, laissant à votre charge d’activer les layers que vous voulez utiliser. Je recommande de commencer par la version complète pour débuter quitte à faire marche arrière ensuite pour alléger votre setup.

Spacemacs, par sa nature est plus difficile à faire évoluer selon vos besoin. Il faut créer des layers en respectant certaines conventions mais aussi il faudra remapper tous les raccourcis clavier du mode que vous ajoutez si vous voulez qu’ils soient disponibles via le space leader sinon vous vous retrouverez à avoir un mix de space leader et de commandes plus classiques à la C-x C-c t.

Ce n’est pas insurmontable mais la création de votre premier layer vous demandera un peu de temps.

Pour finir, notez qu’il est tout à fait possible d’avoir un Emacs classique avec de l’édition modale à la Vim. Pour cela, il suffit d’installer / activer le mode Evil. Ce mode à lui seul ajoute l’édition modale avec la prise en charge de la quasi totalité du vocabulaire Vim. Vous aurez donc un Emacs classique, avec ses raccourcis classiques mais de l’édition modale.

Gestion des paquets

Emacs est livré de base avec un gestionnaire de paquets qui permet de voir ce qui est disponible, de filtrer sur des mots-clés, d’installer et mettre à jour des paquets.

Si vous estimez qu’il vous manque quelque chose, une application, une fonctionnalité d’édition, c’est le premier endroit où regarder. Quelqu’un a sûrement déjà eu le même besoin que vous et aura créé un paquet. Voyons comment faire. Les commandes listées ci dessous sont destinées à un Emacs classique (non Spacemacs).

La première chose à faire est d’ajouter une des sources majeure de paquets à votre configuration, étape inutile si vous utilisez Prelude ou Spacemacs qui l’aura déjà fait pour vous. Si ce n’est pas le cas, ouvrez votre fichier .emacs.d/init.el :

C-x C-f ~/.emacs.d/init.el RET

et ajoutez :

(require 'package)
(add-to-list 'package-archives
             '("melpa" . "https://melpa.org/packages/"))

(package-initialize)

qui aura pour effet d’ajouter la sources MELPA à vos sources de paquets.

Vous pouvez ensuite recharger votre configuration avec :

M-x eval-buffer

qui va lire le code elisp du buffer actuel et l’exécuter.

On peut maintenant lister les paquets avec M-x package-list-packages. La liste est longue, on peut donc la filtrer avec f suivie de mots-clés, ruby par exemple ce qui aura pour effet de restreindre la liste aux paquets qui contiennent ce terme dans leur nom ou leur description.

Liste des paquets filtrée

Si vous trouvez un paquet qui vous intéresse, vous pouvez le marquer pour installation avec i, vous pouvez répéter l’opération pour d’autres paquets. Une fois terminé, x exécutera réellement les actions. Vos nouveaux paquets sont disponibles à l’usage.

Si vous voulez plus d’informations sur un paquet, positionnez vous sur sa ligne et tapez ?.

Pour sortir du gestionnaire de paquet, il suffit de presser q.

La plupart des paquets lorsqu’ils sont installés fonctionneront sans plus de configuration, mais tous peuvent prendre des options de configuration qui permettront de personnaliser leur fonctionnement. On peut retrouver ses options dans l’outil de configuration (M-x customize ou M-x customize-group le_nom_du_paquet).

Commandes principales

Voyons maintenant les commandes les plus utiles, ce sont des commandes natives mais qui pour la plupart peuvent être améliorée par l’utilisation d’un paquet, notamment Helm qui ajoutera des possibilités de complétion évoluées sur de nombreuses commandes.

Sachez qu’il est toujours possible d’interrompre une commande avec C-g, si par exemple vous avez commencé un mauvais raccourci clavier.

Je ne parlerai ici que des raccourcis d’origine d’Emacs, pas de ceux de Spacemacs. Pour ceux qui utilisent Spacemacs, la documentation du site reprend la plupart des raccourcis clavier mnémoniques. Aussi le mode mineur which-key est activé, dès lors que vous aurez tapé espace, une liste des raccourcis possibles sera affichée. Pour les déplacement dans le buffer, vous pouvez vous référer au Vim Cheat Sheet. Si vous connaissez Vim vous savez déjà vous déplacer dans les buffers sous Spacemacs.

Gestion de fichier

Ouvrir ou créer un fichier : C-x C-f le_chemin

À noter qu’avec Helm ou même Ido d’activé, on peut passer des chemins partiel pour rechercher un fichier, des regexp, ajouter un ~ en fin de ligne pour revenir au home, /ssh: pour ouvrir des fichier distants, …

Ouverture de fichier

Déplacements

Une fois un fichier ouvert, on peut évidemment se déplacer avec les flèches mais également utiliser des raccourcis clavier :

Se déplacer

avant arrière
caractère C-f C-b
mot M-f M-b
ligne C-n C-p
écran C-v M-v

Tous les mouvements peuvent être précédés par un argument numérique qui représente le nombre de fois à exécuter la commande. Disons que je fasse C-12 M-f alors j’avancerais de 12 mots.

Les arguments numériques sont très utiles et souvent utilisés, de ce fait il existe plusieurs façon de les déclarer :

C-u 12
C-1 C-2
M-1 M-2

Aller à

début de fin de
ligne C-a C-e
phrase M-a M-e
paragraphe M-{ M-}
buffer C-< M->

On constate que pour toutes les commandes les mouvements effectués via control ne dépendent pas du contexte (caractères, lignes) alors que les mouvements utilisant meta sont eux dépendants du contexte (mot, phrase, paragraphe). Elles dépendent donc du mode majeur dans lequel vous vous trouvez.

D’autres raccourcis qui dépendent du mode majeur activé sont :

  • C-M-{f,b} : s-exp (avant / arrière par expression)
  • C-M-{d,u} : haut / bas par voisin

Notez qu’il est possible d’utiliser M avec les flèches. M-→ et M-← font respectivement avancer ou reculer le curseur d’un mot. M-↑ et M-↓ fera remonter / descendre le paragraphe courant s’il est en mode texte.

On peut déplacer le curseur au milieu de la frame, puis en haut, puis en bas en répétant M-r. On peut également déplacer la ligne courante (là où le curseur est positionné) au milieu de la frame, en haut puis en bas en répétant C-l.

On peut aussi scroller page par page, vers le bas avec C-v et vers le haut avec M-v.

Pour se rendre à une ligne donnée M-g M-g puis le numéro de la ligne. Pour se rendre à une colonne donnée, on utilisera M-g tab

Recherche incrémentale

L’autre méthode de déplacement que j’utilise souvent et qui s’avère très efficace est la recherche incrémentale. Au fur et à mesure de la recherche, les occurrences s’affichent en sur-brillance et on peut se déplacer de l’une à l’autre.

Recherche incrémentale

Pour démarrer une recherche incrémentale, on utilise C-s puis on tape du texte. La répétition de C-s aura pour effet de passer à l’occurrence suivante jusqu’à la fin du buffer. Si on essaie à nouveau, Emacs nous demandera si on veut repartir au début du buffer.

Si on arrête notre recherche (avec C-g ou RET), il nous est possible de la relancer avec C-s C-s.

Pour une recherche dans le sens inverse, on utilisera C-r. Notez que ces recherches sont des recherches exactes du texte entré. Si vous voulez rechercher par regexp c’est possible grâce à C-M-s.

Pour une aide ultra complète sur les recherches incrémentales, je vous conseille l’aide en ligne via C-s C-h C-h m.

Autres techniques de déplacement rapide

Sans nécessiter l’installation de paquet supplémentaire (et il en existe des tas pour optimiser vos déplacements), il reste encore deux fonctionnalités qui vous permettront de vous déplacer plus vite.

Il y a tout d’abord le mark ring. Chaque déplacement ou action significative dans le buffer crée l’ajoute d’une marque dans le mark ring qui est donc en quelque sorte un historique circulaire des déplacements dans le buffer. Il est possible de déplacer dans le temps en remontant de marques en marques. Avec l’habitude cette fonctionnalité est très pratique et permet de largement améliorer sa vitesse de navigation. Pour sauter de marques en marques il suffit d’utiliser C-u C-space. Il est également possible de poser une marque de manière explicite grâce au raccourci C-SPC C-SPC.

L’autre technique consiste a utiliser des registres nommés. Il est possible d’enregistrer dans Emacs des positions de curseur ou des régions dans des registres. Chaque registre a un nom composé d’une seule lettre (minuscule ou majuscule) ou un chiffre.

Pour copier une région dans un registre, on utilisera le raccourci C-x r s AA est la lettre représentant le registre.

Pour insérer le texte d’une région préalablement sauvegardée dans un registre, on utilisera C-x r i AA est toujours le caractère représentant le registre à utiliser.

Pour sauvegarder la position du curseur dans un registre on passera par C-x r SPC AA est le caractère représentant le registre. Pour y retourner on utilisera C-x r j A.

Remplacement

Vous pouvez également rechercher et remplacer du texte. En faisant M-% on vous demande le terme de recherche puis un terme de remplacement. Une fois la recherche lancée, chaque occurrence est passée en revue et on vous demande si vous voulez (y) ou non (n) remplacer l’occurrence courante. Il est également possible de dire que vous voulez remplacer toutes les occurrences sans plus de validation (!).

Le remplacement est assez intelligent pour détecter la casse de l’occurrence courante, Si l’occurrence commence par une majuscule, le remplacement vous proposera la version capitalisée de votre terme de remplacement.

Recherche et remplacement

Le kill-ring

Le kill-ring est une sorte de mémoire des choses qui sont copiées, coupées ou supprimées qu’il est possible de rappeler quand bon nous semble pour récupérer un des éléments supprimé plus tôt et s’en servir.

Tout d’abord comment “killer” des éléments ?

Voici quelques raccourcis :

  • C-k : supprime depuis le curseur jusqu’à la fin de la ligne
  • M-d : supprime le mot derrière le curseur
  • M-k : supprime depuis le curseur jusqu’à la fin de la phrase
  • C-del : supprime le mot avant le curseur
  • S-C-del : supprime toute la ligne

Faites quelques essais puis tapez C-y, vous verrez que le dernier éléments qui avait été supprimé vient d’être inséré. Vous pouvez aussi faire M-y pour parcourir la liste de tout ce qui se trouve dans le kill-ring pour l’insérer à la position du curseur.

Exécuter une commande

On l’a déjà mentionné mais M-x permet de lancer une commande. Il y en a des centaines disponibles, il est donc impossible de faire la liste mais on peut par exemple faire M-x calendar, M-x calc, M-x browse-web, M-x revert-buffer.

Modes et fonctionnalités indispensables

Quelques modes livrés de base avec Emacs :

imenu

Permet d’afficher une liste des déclarations du buffer courant (méthodes, classes, sections en markdown, etc) et de s’y déplacer rapidement:

Commande: C-x c i

Imenu

Doc officielle

Bookmarks

Permet de poser un marque page sur n’importe quel buffer (fichier, répertoire, fichier distant, mail, recherche web, …) et d’y retourner facilement. Contrairement aux registres, les bookmarks sont des références persistante qu’on peut donc réutiliser d’une session à l’autre.

Commandes :

  • C-x r m Ajoute un bookmark à la position du curseur
  • C-x r b Saute à un bookmark
  • C-x r l Liste l’ensemble des bookmarks

Doc officielle

Dired

Pour naviguer dans un répertoire et y effectuer des opérations comme le renommage, la copie, la création de sous-répertoire, …

Dans ce mode on peut activer la fonction édition qui transforme la liste des fichiers en un simple buffer éditable, dès qu’on quittera le mode, les modifications seront effectuées.

Commandes :

  • C-x d Ouvre le minibuffer pour demander quel répertoire ouvrir, par défaut le répertoire du buffer courant est sélectionné
  • C-x j Ouvre dired dans le répertoire courant avec le curseur positionné sur la ligne correspondant au fichier courant

Dired

Doc officielle

Aide

Pour avoir de l’aide sur un raccourci clavier, une fonction, une variable ou encore tout ce qui pourrait correspondre au terme de recherche.

Commandes :

  • C-h k Obtenir de l’aide sur un raccourci donné
  • C-h f Obtenir de l’aide sur une fonction donnée
  • C-h v Obtenir de l’aide sur une variable donnée
  • C-h a Obtenir de l’aide à propos d’un sujet
  • C-h o Obtenir de l’aide à propos d’un symbole

Doc officielle

Gestionnaire de fenêtres

Emacs intègre un gestionnaire de fenêtre qui permet de splitter horizontalement ou verticalement une frame, de ne garder ou ne fermer que la courante. On peut également ouvrir de nouvelles frames ou les fermer.

Commandes :

  • C-x 2 Split horizontal
  • C-x 3 Split vertical
  • C-x 1 Ne garder que la fenêtre courante
  • C-x 0 Fermer la fenêtre courante
  • C-x o Basculer d’une fenêtre à l’autre

Fenêtrage

Doc officielle

À associer avec windmove pour faciliter le déplacement entre fenêtre via S-fleche.

Les régions

Elle permettent de sélectionner une région dans le buffer pour y faire quelque chose (supprimer, remplacer, indenter, …).

Commandes :

  • C-space sélection manuelle
  • C-x h buffer complet
  • M-h paragraphe courant

régions

Doc officielle

Sélection rectangulaire

Permet de sélectionner une région rectangulaire pour la supprimer, y ajouter du texte identique sur chaque ligne, etc.

rectangles

Explications et raccourcis clavier

Les macros

Sert à automatiser des tâches répétitives comme “Aller au bout de la ligne, supprimer les 2 derniers caractères, ajouter une virgule”

Commandes :

  • F3 pour démarrer la macro
  • F4 pour stopper la macro
  • F4 pour la jouer
  • M5-F4 pour la jouer 5 fois
  • M0-F4 pour la jouer jusqu’à ce qu’une erreur se produise

macros

Doc officielle

Gestion du versionnement

Emacs embarque une interface normalisée pour la gestion des outils de versionnement, que le projet utilise Git, Mercurial, Bazar ou encore SVN, une interface toujours identique est disponible pour gérer le versionnement (ajout de fichier, commits, logs, …).

Commande : C-x v

Doc officielle

Mise en avant des erreurs de programmation

Flycheck est un mode mineur pour effectuer du linting automatique sur votre code avec mise en évidence des erreurs et raccourcis pour les parcourir.

En Ruby par exemple on aura les alertes de l’interpréteur Ruby plus ceux de Rubocop s’il est installé. Survoler une erreur donnera son détail, on peut même demander à Rubocop de les corriger pour nous.

Flycheck

Les bases de l’utilisation

Flyspell

Une fois ce mode actif, les erreurs orthographiques seront mises en évidence et peuvent même être corrigées automatiquement. Ce mode peut s’activer sur tout le buffer, pour un mail ou un article de blog par exemple mais ne s’appliquer que sur les commentaires en mode programmation.

Flyspell peut être configuré pour qu’il fasse en sorte d’utiliser une langue différente en fonction du contexte.

Doc officielle

Org mode

Sans aucun doute l’un des modes les plus emblématique d’Emacs. Org mode permet de faire de la publication, de gérer son planning, sa todo list, de faire du GTD, du Pomodoro, de filtrer les éléments en fonction de tags, du statut, d’afficher les événements à venir dans un agenda, d’exporter son contenu vers de nombreux formats et bien d’autres choses encore.

C’est un mode à propos du quel il faut absolument se documenter et tester, n’importe quel utilisateur d’Emacs y trouvera un intérêt.

Site officiel

Auto fill

Ce mode mineur permet de couper automatiquement les lignes à un nombre de caractères donnés. Il est paramétrable par mode.

Il existe aussi de très nombreuses extensions qu’on peut installer, en voici quelques unes que j’utilise :

Projectile

Ajoute la notion de projet à Emacs, par exemple ouvrir un fichier qui est versionné avec Git créera un projet Projectile, il est ensuite possible de ne naviguer que dans les fichiers de ce projets, faire des recherches ou remplacement en son sein, lancer l’outil de versionnement, tuer tous les buffers relatifs à ce projet, naviguer dans les buffers relatifs au projets, passer à un autre projet, …

Magit

C’est une version améliorée de l’outil de versionnement et dédiée à la gestion des projets géré avec Git. Ce package met à votre disposition toutes les commandes possibles et imaginables de Git de façon très compréhensible et s’intègre parfaitement avec l’éditeur. Un must-have.

Yasnippet

C’est un outil de collection de snippets pour s’épargner de la frappe sur des constructions récurrentes (comme un if / else / end) par exemple.

Snippets

Robe

C’est un outil d’assistance pour Ruby qui utilise son REPL avec le code de votre app pour pouvoir fournir des informations à propos des ses classes et modules et qui permet de savoir où chaque méthode est définie.

Ses fonctionnalités sont :

  • saut vers la définition de méthode
  • saut vers la classe ou le module qui définie la méthode
  • affichage de la documentation de la méthode
  • affichage des paramètres à passer à la méthode sous le curseur via ElDoc
  • complétion des méthodes et constantes

Ag (The Silver Searcher)

Permet de faire de la recherche ultra rapide dans tous les fichiers d’un projet par exemple.

Helm

Ajoute de la complétion sur à peu près toutes les commandes.

Multi-term

Permet de gérer des terminaux multiples dans Emacs simplement, ça permet aussi d’avoir un raccourci pour avoir un petit terminal affichable / masquable en un raccourci dans un buffer donné.

rbenv

Détection ou sélection d’une version de Ruby dans Emacs.

smartparens

Gestion intelligente des paires (parenthèses, guillemets, crochets,…).

undo-tree

Permet d’avoir un affichage graphique de l’arbre des changements du buffer courant et de revenir en arrière dans les modifications en sautant d’une branche à l’autre. Chaque modification peut être accompagnée de son diff et de l’heure où elle a eu lieu.

use-package

Permet d’organiser la configuration de son .init.el plus efficacement, il va également télécharger automatiquement les paquets manquants et faire du lazy loading pour améliorer les temps de chargement. Si vous pensez créer votre propre configuration maison, il faut l’utiliser plutôt que d’avoir à gérer tous les détails à la main.

which-key

C’est un mode mineur qui affiche les raccourcis claviers disponibles quand on a commencé à en entrer un et qu’on ne le termine pas. Pratique pour découvrir les raccourcis des différents modes ou quand on a un trou de mémoire.

Which key

Liens intéressants


L’équipe Synbioz.

Libres d’être ensemble.

Articles connexes

Un plugin Vim à la mimine

03/01/2019

Dans l’article précédent, intitulé une assez bonne intimité, je vous présentais GPG et le chiffrement de courriels. Nous avons alors remarqué que le contenu d’un courriel était encodé de sorte que le...

Une assez bonne intimité

20/12/2018

Si vous êtes utilisateur de MacOS, il y a de fortes chances que vous utilisiez Apple Mail pour échanger des courriels. Et comme vous êtes sensible à la confidentialité des informations que vous...

Tests end to end avec Jest et Puppeteer

05/07/2018

Dans cet article, on va partir sur des tests end to end. Pour planter le décor, un test end to end (e2e) est un test logiciel qui a pour but de valider que le système testé répond correctement à un...

Chasser les requêtes N+1 avec Bullet

05/04/2018

Aujourd’hui nous allons parler des requêtes N+1 dans une application Rails : vous savez ces lignes quasiment identiques, qui s’ajoutent de manière exponentielle aux logs, dès lors que l’on appelle...