Quels packages sont disponibles pour l'édition modale?

13

Quels packages sont disponibles pour l'édition modale dans Emacs? Qu'est ce que vous utilisez et pourquoi?

Essayons de poster un paquet par réponse. Je propose de mentionner les avantages et les inconvénients de chaque colis.


Voici ma définition de l'édition modale (je n'ai pas trouvé d'article Wikipeadia dédié):

Édition modale - style d'édition de texte lorsque l'utilisateur bascule régulièrement entre le «mode normal» lorsque les touches n'entraînent pas l'insertion de leurs caractères mais effectuent diverses opérations sur le texte et le «mode d'insertion» lorsque les touches insèrent les caractères correspondants. Il peut y avoir plus de modes, bien sûr. La plupart des éditeurs modernes ne sont pas modaux. Un exemple d'éditeur de texte modal est Vi (Vim).

Mark Karpov
la source
Et qu'est-ce que "l'édition modale"?
Lindydancer
@ Lindindancer, j'ai ajouté ma tentative d'expliquer le concept à la question.
Mark Karpov,

Réponses:

13

evilLe E à rallonges VI L ayer pour Emacs

Mis à part le nom discutable, evilc'est l'état de l'art actuel en ce qui concerne l' vimémulation dans Emacs (et peut-être n'importe où ailleurs, d'ailleurs). Il prend en charge de nombreuses fonctionnalités que d'autres packages d'émulation Vim évitent, notamment:

  • vim objets texte
  • vim registres
  • vim macros de clavier
  • ex commandes

Les avantages

  • La compatibilité avec les clés vimsignifie que vous ne perdez pas votre mémoire musculaire lorsque vous passez à des systèmes sans Emacs.
  • Très mature et largement utilisé (beaucoup de packages communautaires, par exemple)
    • De nombreux packages vimont été portés evil.
  • vim la grammaire de style est modulaire et se prête très bien à l'extension utilisateur
  • evil lui-même est très extensible: créez vos propres objets texte, opérateurs et mouvements!

Désavantages

  • Il faudra probablement un peu de violon pour le faire jouer bien avec d'autres packages
    • Heureusement, evilrend les cas d'utilisation les plus courants ridiculement faciles.
  • evilest un système très complexe. Le piratage du noyau maléfique peut devenir très complexe.
  • vimles raccourcis clavier ne sont pas nécessairement ergonomiquement optimaux. Parfois, ils peuvent se sentir un peu arbitraires lorsqu'ils sont portés vers un système différent.
  • Hébergé sur BitBucket (mercurial), faites-en ce que vous voulez.
PythonNut
la source
J'ai trouvé l'acronyme evil for extensible vi layer pour Emacs un peu de mauvais goût.
Nom du
@Name pas mon idée, mais comment?
PythonNut
extrait d'un dictionnaire: mal = Profondément immoral et malveillant, incarnant ou associé aux forces du diable, nuisible, extrêmement désagréable, ...
Nom
5
@Name en tant que personne qui s'est donné le nom de "Name", je pense que vous apprécierez l'utilisation de l'humour lorsque vous nommez des choses. :-) Dans le cas de Evil, c'est de l'ironie (voir en.wikipedia.org/wiki/Irony#Definitions ). Pour ma part, je pense que c'est l'un des meilleurs noms jamais donnés à un package Emacs, et je dirais que c'est un avantage!
tarsius
@PythonNut Je pense que l'utilisation de Bitbucket pose moins de problème (en fait, pas de problème du tout) que l'utilisation de Mercurial.
tarsius
11

Il y a god-mode( https://github.com/chrisdone/god-mode ), qui utilise des raccourcis clavier Emacs standard mais supprime la nécessité de maintenir les modificateurs enfoncés. Lorsque le mode divin est activé, les C-...liaisons ne nécessitent aucun modificateur et les M-...liaisons utilisent un préfixe plutôt qu'un modificateur.

Comme exemple de la page github:

Avant: Cp Ck Cn M- ^) Cj Cy Mr Cx zz M-2 Mg Mg Cx Cs

Après: pkng ^) jygr. . 2 ggx

Stefan
la source
1
Veuillez développer votre réponse, donc ce n'est pas seulement un lien.
Mark Karpov
@Stefan - J'ai pris la liberté de développer un peu votre réponse. N'hésitez pas à changer comme vous le souhaitez.
glucas
glucas: Merci! @Mark: ne sachant rien de plus sur le mode divin, je n'ai pas pu facilement développer ma réponse. Je l'ai posté dans l'espoir que quelqu'un comme les glucas remplisse les blancs.
Stefan
6

Ajoutant le mien, merci @Mark pour ses encouragements.

Xah Fly Keys

Conçu à partir de zéro pour emacs, dans le but d'être le système le plus efficace, à partir d'années d'expérience avec le mode ergoemacs. Les choix clés sont basés sur la science autant que possible, basés sur des statistiques de fréquence de touche et de score de touche facile à appuyer. Les commandes les plus fréquemment utilisées sont mappées sur les touches les plus faciles à appuyer. D'autres problèmes, tels que le regroupement et le bigram de liaison de touches, sont également pris en compte à partir de 3 ans d'expérience hebdomadaire.

Points intéressants:

  • Toutes les commandes Cx sont effectuées par séquence de 2 à 3 touches simples. Dans xah-fly-keys, Cx n'est jamais nécessaire. M- n'est jamais nécessaire non plus.
  • N'entre en conflit avec aucune clé GNU emacs, car il ne lie pas Ctrl ou Meta (sauf C-7, C-8, mais pas essentiel). Vous pouvez avoir des touches xah-fly en mode insertion et utiliser GNU Emacs comme vous le faites normalement.
  • A également considéré quel ensemble de commandes entraîne une efficacité d'édition maximale. Ainsi, le package utilise ~ 80 commandes d'édition personnalisées. (par exemple, copier copiera la ligne actuelle s'il n'y a pas de sélection. Une seule commande pour basculer la casse des lettres, au lieu des ~ 6 variations de GNU Emacs de haut / bas / région / pas de région.)
  • La mise en œuvre est aussi simple que possible. Aucune macro, aucun conseil, aucun remappage complexe des clés, seuls quelques crochets sont utilisés. (Bon ou Mauvais?!)

Désavantages:

  • Comme pour l'apprentissage vi pour la première fois, vous aurez besoin d'un mois pour l'adopter.
  • Peu connu. Vient de sortir pour une utilisation publique ce mois-ci.
  • Prend actuellement en charge la disposition Dvorak uniquement.
  • Pas encore de diagramme clé pour l'apprentissage.
  • Pour les modes principaux, vous devez toujours utiliser Cc. (vous pouvez donc utiliser d'autres packages tels que god-mode ou hydra pour résoudre ce problème.)

Je suis l'auteur, alors soyez averti que je peux être inconsciemment biaisé. N'hésitez pas à commenter ou corriger.

Xah Lee
la source
Avez-vous des chances de prendre en charge d'autres dispositions de clavier? Je sais qu'ErgoEmacs le fait. Je pourrais essayer, mais la barre de passage à Dvorak est trop haute pour une expérience décontractée.
PythonNut
@PythonNut oui, priorité absolue. J'espère dans une semaine. L'essentiel est de comprendre comment je veux le mettre en œuvre.
Xah Lee
Ah. Très cool. Je vais lui faire un tourbillon quand il sortira.
PythonNut
6

Modalka doit être le dernier du bloc d'édition modale. Le projet github semble avoir 10 jours. Je n'ai pas assez de temps d'utilisation pour commenter ou évaluer, mais voici comment cela est décrit:

Il s'agit d'un kit de construction pour vous aider à passer à l'édition modale dans Emacs. L'objectif principal du package est de rendre l'édition modale dans Emacs aussi naturelle et native que possible. Il n'y a pas de piratage, pas de cas d'angle, pas d'émulation - il suffit de commencer à modifier de manière modale comme vous le souhaitez.

La documentation aussi compare et contraste Modalka avec d' autres solutions modales communes, comme evil, god-mode, boon, etc.

Utilisateur Emacs
la source
4

Aubaine

Boon est l'un des packages moins connus pour l'édition modale. Il n'émule pas Vi (ou Vim) mais fournit une disposition originale optimisée pour la disposition du clavier Colemak.

Avantages et principes de conception

  • Allocation spatiale d'abord, mnémonique ensuite: l'allocation des touches aux commandes est basée en priorité sur les emplacements des touches du clavier. Tout ce qui est imprimé sur le capuchon de la clé est une préoccupation secondaire.

  • Rouleaux de doigt faciles: la combinaison courante doit être l'alternance gauche / droite ou les rouleaux faciles à une main.

  • Utilisation de la ligne d'accueil et des doigts forts pour les commandes les plus utilisées

  • Navigation facile: de nombreuses commandes sont liées à la navigation. Cela facilite les déplacements. Comme les mouvements se doublent de définitions de régions, cela rend les commandes de manipulation (opérateurs) plus puissantes.

Désavantages

  • Vous devez réapprendre à interagir avec l'éditeur car la collection de primitives d'édition et leur placement sur le clavier sont assez uniques.
Mark Karpov
la source
1
Cela semble un peu étrange que Boon ne se soucie pas vraiment de ce qui est sur la clé, tout en imposant que les clés soient Colemak. Il semble que cela devrait être indépendant de la mise en page.
PythonNut
@PythonNut, je suppose que les gens doivent se référer aux clés d'une manière ou d'une autre :-) Je pense qu'il est tout à fait possible de le faire fonctionner avec d'autres dispositions.
Mark Karpov,
Boon prend désormais en charge QWERTY et QWERTZ, voir github.com/jyp/boon#installation . J'ai mis à jour la réponse pour refléter cela.
raju-bitter
3

Ergoemacs prend également en charge l'édition modale. Il n'émule pas vi, mais utilise la touche Alt pour les commandes les plus fréquemment utilisées. Par exemple, le curseur en mouvement est Alt plus T. inversé à droite (Sur QWERTY c'est Alt+ jpour left, Alt+ lpour droite, Alt+ ipour upet Alt+ kpour down). La suppression du caractère ou du mot s'effectue à l' Altaide des touches de la ligne d'accueil de gauche. Les choix de touches sont basés sur la fréquence des commandes et la position des touches pour faciliter la pression.

  • Pour démarrer l'édition modale, l'utilisateur peut appuyer sur f6.
    • Une fois f6enfoncée, les touches les plus fréquemment utilisées ne nécessitent plus de combinaison de touches alt.
    • Par conséquent, sur QWERTY, jest left, jest right, iest upet kest en panne).
  • Pour quitter le mode de commande modale return, appuyez sur , f6ou escape.

En plus du paradigme modal traditionnel, il est un paradigme quasi modal qui permet à tout C-xou C-ccombinaison de touches à atteindre sans utiliser les modificateurs (comme mode de dieu).

  • Le quasi-modal est démarré avec le QWERTY apps fpour C-cavec la touche de contrôle enfoncée et le QWERTY apps dpour C-x.
  • En complétant cette séquence de touches, la appstouche changera le type de modificateurs que l'on suppose enfoncés.
  • Une fois la commande appelée, ergoemacs reprend le mode d'édition.
  • Au cours de n'importe quelle séquence de touches, vous pouvez également modifier les types de touches enfoncées. C'est en appuyant simplement à nouveau sur la appstouche.

En plus de changer les touches de commande, le mode ergoemacs vous permet de changer des choses sur la séquence de touches tout en la tapant:

  • Vous pouvez modifier l'argument préfixe au milieu d'une séquence de touches en appuyant sur f2.
  • Appuyez sur pour backspacereprendre la dernière touche enfoncée.
  • Apps vous permet de modifier les touches enfoncées pendant n'importe quelle séquence de touches.

ergoemacs-mode tente également de respecter tout ce que le mode fait sur les touches fondamentales. Par exemple, si org-mode définit une clé spéciale pour next-line, ergoemacs utilise cette commande pour Alt+ ken mode org.

Avantages:

  • Une partie de GNU Emacs, dans ELPA.
  • Prend en charge les clés Windows / Linux «universelles» prêtes à l'emploi. par exemple Ouvrir ( C-o), Fermer ( C-w), Sélectionner tout ( C-a), Copier ( C-c), Couper ( C-x), Coller ( C-v), etc.
  • Assez populaire.
  • Prend en charge de nombreuses mises en page, y compris Qwerty, dvorak, colemak, bepo et de nombreuses autres mises en page internationales qui ajustent les clés pour s'assurer qu'elles sont sur la ligne de départ (Mi dans QWERTY serait Mu dans colemak).
  • Affiche une image de la disposition de votre clavier dans emacs en décrivant le thème.
  • Les clés sont personnalisables via un système d'extension, en créant un thème.
  • Vous pouvez configurer n'importe quelle carte de touches modale arbitraire (non encore documentée).

Désavantages:

  • La stabilité est lente au démarrage.
    • Dans le maître instable, le premier démarrage est lent (~ 5 secondes pour une configuration minimale), (~ 20 secondes pour mon démarrage)
    • Le deuxième deuxième démarrage est beaucoup plus rapide (pour ma configuration complexe, c'est ~ 4 secondes).
    • Cela est dû au fait que le mode ergoemacs change et met en cache chaque carte de touches active dans emacs. Au deuxième démarrage, ces paramètres sont enregistrés.
  • Code complexe.

Voir https://github.com/ergoemacs/ergoemacs-mode

Matthew Fidler
la source
2

Hydra est une autre option semi-modale:

https://github.com/abo-abo/hydra

Selon le site Internet

Imaginez que vous avez lié Cc j et Cc k dans votre configuration. Vous voulez appeler Cc j et Cc k dans une séquence (arbitraire). Hydra vous permet de:

  • Liez vos fonctions de manière à appuyer sur Cc jjkk3j5k équivaut à appuyer sur Cc j Cc j Cc k Cc k M-3 Cc j M-5 Cc k. Toute touche autre que j ou k quitte cet état.

  • Attribuez un indice personnalisé à ce groupe de fonctions, afin que vous sachiez immédiatement après avoir appuyé sur Cc que vous pouvez poursuivre avec j ou k.

Je ne l'ai pas utilisé mais cela semble intéressant.

Matthew Fidler
la source