URL: https://linuxfr.org/users/saltimbanque/journaux/emacs-nu-mode-et-ses-concurrents Title: Emacs NU-MODE et ses concurrents Authors: saltimbanque Date: 2017年10月08日T00:19:43+02:00 License: CC By-SA Tags: emacs Score: 19 NU-MODE passe en 0.4! #Qu'est-ce que NU-MODE ?# https://github.com/pyluyten/emacs-nu ![NuModeHydra](https://nupad.files.wordpress.com/2017/10/masterprompt.png) NU-MODE est un énième package Emacs proposant une refonte complète des raccourcis claviers. Les raccourcis associés à chaque lettre sont revus. De plus, un système de menus est intégré (comme des pop-ups mais ce sont des "prompts"). Ces menus sont (un peu) "responsive" : ils s'adaptent au contexte, du moins pour l'instant au mode majeur, & si l'on a du texte sélectionné ou pas. **En quoi est-ce utile?** ![EntorseMain](http://www.scottsarber.com/upload/9/bb/9bbb6fb67a71ea2b5744717e94e3e7ae.jpg) Emacs possède d'une part des raccourcis standards odieux, archaïques et fourbes, d'autre part des myriades de millions de fonctions utiles. Dont des dizaines sont utiles très souvent. Zut! Donc se pose la question de comment rendre accessibles les fonctions les plus fréquentes, mais aussi comment accéder aux fonctions un peu moins fréquentes. Et éventuellement comment découvrir de plus rares. Parce que Emacs c'est comme votre chef : suppose toujours que vous avez lu les 773 manuels de chacun 1113 pages, en moyenne - et tout retenu. Bref revenons au sujet. Si vous n'étiez pas au courant pour les raccourcis Emacs par défaut (!) vous pouvez par exemple voir cela https://ensiwiki.ensimag.fr/index.php?title=Raccourcis_claviers_Emacs ça fait peur non? (En fait j'utilise tout de même ces raccourcis dans le bash, & dans ce contexte ça passe, mais faut pas pousser. Voir l'excellente contrib récente pour le bash : https://linuxfr.org/users/postroutine/journaux/bash-et-les-raccourcis-claviers) Bon comment faire de Emacs un truc utilisable? Quelles seraient les solutions "natives" ? - s'habituer aux raccourcis claviers, puis y perdre sa main (ou juste sa patience) - lancer constamment "M-x" , qui permet d'appeler une fonction par son nom. On tape Alt+x et puis l'on tape directement le nom de la commande, comme "find-files", pour ouvrir un fichier. Ce qui ressemble un peu au ":" de VI. Super pratique. Bon Emacs bien sûr sait faire de la completion (enfin environ 112 systèmes de completion différents...) mais ce n'est pas toujours adéquat. - utiliser les flèches pour naviguer ou le menu pour les fonctions. Nan là je rigole. - définir à la mano, commande par commande, ses propres raccourcis. Je pense que pas mal de users "tweakent" pas mal. Hormis les solutions ci-dessus, viennent des ajouts à Emacs. Ces ajouts sont le mal, puisqu'ils font concurrence à NU-MODE. Je compte donc sur Donald Trump. En attendant les présenter de manière biaisée pourrait m'aider. #Comment décrire NU-MODE par rapport à ses concurrents?# Ah!, ça devient plus intéressant. NU-MODE n'est pas le premier à chercher à résoudre ces problèmes fondamentaux! loin de là. Au menu : CUA mode, evil, spacemacs, hydra, magit (?! si), et enfin ErgoEmacs. ## cua mode ## https://www.gnu.org/software/emacs/manual/html_node/emacs/CUA-Bindings.html CUA mode est un ancien et joli package Emacs, dispo directement dans Emacs, notamment réhabilitant quatre raccourcis standards. CUA permet en effet - de faire Ctrl+x pour couper, Ctrl+z pour annuler, Ctrl+c pour coller, Ctrl+v pour annuler. Waou. Truc de ouf quoi. - de continuer quand même à faire Ctrl+x pour son rôle habituel dans Emacs (par ex dans Emacs ouvrir un fichier c'est Ctrl-x Ctrl-f) Ah... un peu plus sympa. - de faire Ctrl+c pour les choses normales dans Emacs (Ctrl c + lettre = raccourcis dédiés user, Ctrl c + Ctrl xxx = raccourcis pour le mode majeur, Ctrl c + ponctuation = raccourcis pour mode mineur, à quelques exceptions près - ouch) cf https://www.gnu.org/software/emacs/manual/html_node/elisp/Key-Binding-Conventions.html - de gérer des rectangles. Sauf que Emacs inclut maintenant des fonctions natives pour gérer les rectangles. & pis de toutes façons c'est pas mon sujet, alors j'en parle pas! - de faire shift+mouvement pour sélectionner du texte (waaa!!! rétro futurisme quand tu nous tiens!!) Bref très bien très bien tout ça, mais trop limité. En me fiant à ma boule de cristal magique, je dirai que CUA MODE bien que ne changeant pas tout, est assez populaire. ## Evil ## https://github.com/emacs-evil/evil Plusieurs implémentations de VIM existent dans EMACS. Evil en fait partie. Evil est la plus récente et la plus complète. Techniquement cela fonctionne extrêmement bien, et charger ce package ne ralentit absolument pas le lancement de Emacs. Chapeau! Au point où, pour un utilisateur VIM, Emacs pourrait tout à faire être la meilleure version de VIM! Puisque Emacs permettra les touches VIM, beaucoup plus de package, une bien plus grande souplesse pour écrire ses propres fonctions. Mais evil transforme donc Emacs en VIM, en éditeur modal. Ça, pour plusieurs raisons, je n'en voulais pas. NU-MODE considère qu'un éditeur non modal peut offrir l'ergonomie. Un éditeur modal a le défaut de faire constamment passer d'un mode à l'autre. À la rigueur, constamment collés au clavier, ça peut passer avec l'habitude. Mais je n'y crois pas, hélas! (note : quand ma webcam détectera dans mes yeux si je tape h pour taper h ou h pour me déplacer à gauche, je repasserai peut-être à Evil.) ## spacemacs ## https://github.com/syl20bnr/spacemacs Spacemacs a commencé comme une - belle - surcouche à Evil. on part donc de Evil : on dispose de toutes les fonctions Emacs, mais avec l'"interface" à la VIM. Ensuite, Spacemacs ajoute la touche espace. On appuie sur espace & on se retrouve dans un mega menu avec des trucs comme "taper f pour voir toutes les fonctions relatives aux fichiers". "f" invoque donc un menu dans le menu. À l'inverse, certaines touches sont directes. Par exemple dans le menu, si on appuie sur espace, on se retrouve dans le lanceur de fonction (le M-x de toute à l'heure). Pratique, car c'est très rapide et accessible. Spacemacs inclut tout un tas d'autres trucs. Spacemacs englobe aussi Helm, qui est un système de completion sous Emacs. Parmi les systèmes de completion, Helm est très puissant, mais ne plait pas toujours car un peu lourd, un peu invasif. Par exemple pour lancer une fonction Emacs qui s'appelerait find-org-mode-files, tapez "^f or es$" et Helm vous affichera toutes les fonctions qui pourraient correspondre à votre recherche. Spacemacs apporte de superbes choses : par exemples des contributeurs peuvent apporter un menu pour les fichiers python, un menu pour tel ou tel autre chose. Du coup il y a des milliards de trucs à activer ou pas selon ce qu'on veut. Mais même sans tout activer... Le chargement est très long, et je considère que spacemacs est extrêmement envahissant. Le thème est chouette les 10 premières secondes puis vite ingérable. Cela en devient presque un éditeur à part entière. Enfin d'ailleurs ils appellent cela une distribution de Emacs. Si VIM vous donne l'impression de jouer à Tetris Spacemacs c'est Mario Kart. Avec les peaux de bananes. Bon si vous aimez VIM ou Evil, essayez Spacemacs un peu. ## Hydra ## (attention leur explication c'est genre imbitable.com https://github.com/abo-abo/hydra) Hydra est utilisé par spacemacs (oui ce truc utilise tout, d'où la lenteur et le "bloated"... enfin je dis rien...) Hydra c'est un système de pop-up qui vous dit sur quoi appuyer pour obtenir quelle fonction, & qui permet de laisser le menu actif tant qu'on le quitte pas. Hydra vous propose surtout de créer vos propres hydra. Au niveau affichage, ça utilise un mini truc, lv-message, qui permet d'afficher une zone de notification dans Emacs (sous le minibuffer en gros). Les hydra permettent par exemple de faire une pop-up qui vous dira "g pour aller à gauche, d à droite, h en haut et b en bas", et tant que vous n'appuierez sur rien d'autre que g/d/h/b, le pop-up demeurera. Par exemple ça peut être pratique pour gérer les fenêtres, ou faire par edit. NU-MODE utilise un peu hydra & un peu lv-message. ## god mode ## https://github.com/chrisdone/god-mode God mode c'est plus un petit hack rigolo. L'idée est qu'il y a beaucoup de raccourcis claviers dans Emacs qui incluent la touche "contrôle". Genre Ctrl-n / Ctrl-p pour naviguer sur la ligne suivante / précédente , ou Ctrl-f Ctrl-b caractère suivant/précédent. God Mode propose donc une petite commande qui déclenche l'équivalent de maintenir la touche Contrôle appuyée. Une fois ce "god mode" activé, par exemple taper x f est l'équivalent de Ctrl+x Ctrl+f. On peut aussi gérer les raccourcis Alt en tapant "g" : par exemple ge est l'équivalent de alt+e. En gros vous passez dans l'équivalent du mode "normal" de VIM. Appuyer sur n n'insère plus n, mais déclenche la fonction next-line. Bon c'est rigolo mais c'est du modal au rabais. En pratique je vois mal comment ce serait efficace. ## un petit mot sur magit ## https://github.com/magit/magit Magit est une interface à git? Quel rapport? Aucun! Qui a tué le docteur moutarde? ah ben non là vraiment aucun rapport du coup. Magit, au lancement, se présente comme git status, affiché dans votre éditeur de texte. Gniii? je fais quoi après? pff on voit que vous êtes pas un chaud de Emacs! Emacs c'est toujours du texte magique qui est une interface vers des mondes cachés. Enfin revenons en au git status affiché dans l'éditeur de texte. Vous appuyez sur "h" comme "help", pardi!! Eh là bon sang de bon diable, Magit vous affiche une jolie popup qui propose une trentaine de touches, telle que "c" pour tout ce qui a rapport aux commits, P au "push", & ainsi de suite. Ensuite il n'y a plus qu'à appuyer & vous lancez la commande. Un peu comme spacemacs, vous vous souvenez : des menus. Ces popups magit gèrent les préfixes (par exemple on peut très facilement faire l'équivalent de git commit --amend). Et le mainteneur pense même améliorer ce système pour en faire tout comme une librairie disponible pour la joie & le bonheur d'autres besoins. Ah c'est beau le libre. Donc quel rapport? Eh bien ce type de popup peut être très clair. Par contre c'est du écrit en dur forcément. On découvre les fonctions disponibles, ça donne appétit. On apprend facilement les raccourcis claviers. Dired, ou Ibuffer, pour éditer respectivement des fichiers ou les buffers ouverts, auraient énormément gagné à intégrer quelque chose de ce genre. (à la place faire h lance un describe-mode à 2 balles). Mais peut-être que si magit-popup évolue j'en viendrai à utiliser cette librairie pour NU-MODE. Bref. ## ergoemacs ## https://ergoemacs.github.io/ ErgoEmacs fut d'abord conçu par Xah Lee. Il a trouvé par la suite un autre mainteneur. Ergoemacs est très proche de NU-MODE, puisque - il implémente certains raccourcis standards - il propose une navigation aisée au clavier qui a beaucoup de points communs. Un peu comme si vous preniez CUA MODE & que vous redéfinissiez pour avoir un clavier un peu standard mais aussi facile. NU-MODE utilise d'ailleurs, par défaut, le même "paddle" que ErgoEmacs : maintenir Alt et utiliser ``` i j k l ``` NU-MODE propose aussi le paddle de VIM ``` k h j l ``` Par contre la force de ErgoEmacs est de gérer des "composants" (on peut activer ou non certains compoants) ; et surtout des "thèmes" : - clavier us - clavier fr (azerty) - dvorak - bepo - et plein d'autres voyez ici : https://ergoemacs.github.io/key-setup.html Xah Lee explique un peu sur cette page le principe (attention ça a un peu évolué depuis! http://ergoemacs.org/emacs/ergonomic_emacs_keybinding.html) Je trouve ErgoEmacs magnifique, un petit peu difficile à maitriser (là j'écris ce petit bout en l'utilisant, aie) un peu limité en ergonomie car même s'il y a volonté de n'utiliser que Alt et pas Control en pratique ce n'est pas si vrai. NU-MODE veut aller plus loin, en faisant de Alt un roi et de Control un déchu, et en évitant d'avoir une touche qui fasse un truc avec Alt et rien à voir avec Control. NU-MODE - applique plus largement les raccourcis standards que ErgoEmacs - utilise les prompts pour accéder à plein de fonctions, & permettre de découvrir. (donc NU-MODE est bcp plus rapide à maîtriser). - en utilisant des hooks pour s'appliquer aux modes (helm, ivy, isearch...) ERGOEMACS gère plusieurs claviers, là où chez NU-MODE ce serait moyennement logique puisque la lettre à un sens (dans NU MODE s doit sauver, f doit chercher...) En pratique je pense que l'ergonomie perdue par NU MODE en s'attachant plus fortement à des lettres standards est largement récupérée par ailleurs. ## xah fly keys ## https://melpa.org/#/xah-fly-keys (ah enfin je peux désactiver ErgoEmacs!) xah fly keys je découvre en écrivant ces lignes. - c'est un éditeur modal. Vous êtes dans le mode normal VI, et vous devez taper "f" pour passer en mode insertion. En mode insertion, vous pouvez taper du texte. Pour repasser en mode normal, c'est Alt+Space. - en mode normal, le paddle i j k l de ErogEmacs est repris. Mais donc sans le Alt. - d'autres raccourcis ErgoEmacs sont communs. En mode normal, "c" copy, "v" colle, etc. Vous pouvez aussi utiliser Ctrl+c / Ctrl+v etc. À première vue ce mode, assez confortable en mode normal, ne se pose pas la question de VI de pouvoir passer en mode insertion de 36 façons différentes. Or VI s'en sort comme cela : si le modal peut passer, c'est justement parce l'on peut i I a A, etc. Du coup ça ne me motive pas beaucoup pour tester plus. # Bon et NU-MODE alors # Donc, on navigue avec la touche Alt et (haut bas gauche droite) i j k l - sauf si l'on paddle sur le paddle à la VI : k h j l. (nu-setup-vi-paddle) On sauve avec s. Mais en général Control+s ne sert à rien. On utilise donc Alt+s pour garder la main sur alt. On cherche avec f. Mais en général Control+f ne sert à rien. On utilise donc Alt+f pour garder la main sur alt. Si l'on a besoin d'une fonction "avancée", et qu'il faut donc invoquer un menu, on peut encore garder la main sur alt, car alt+d (un touche très facile sur azerty ou qwerty). Des aides visuelles apparaitront sur isearch ou ivy par exemple. NU-MODE sera le Emacs le plus facile, dans tous les sens du terme. Par contre l'utilisation sur Dvorak/Bépo n'aurait aucun sens. Je ne pense pas travailler sur ce point, mais plutôt améliorer l'intégration de nouvelle fonctionnalités (intégrer tel ou tel mode dans nu-mode). À voir!

AltStyle によって変換されたページ (->オリジナル) /