Welche Pakete stehen für die modale Bearbeitung zur Verfügung?

13

Welche Pakete stehen für die modale Bearbeitung in Emacs zur Verfügung? Was benutzt du und warum?

Lassen Sie uns versuchen, ein Paket pro Antwort zu posten. Ich schlage vor, die Vor- und Nachteile jedes Pakets zu erwähnen.


Hier ist meine Definition der Modalbearbeitung (ich konnte keinen speziellen Wikipeadia-Artikel finden):

Modale Bearbeitung - Art der Textbearbeitung, wenn der Benutzer in regelmäßigen Abständen zwischen dem „normalen Modus“ umschaltet, wenn die Tasten nicht zum Einfügen von Zeichen führen, sondern verschiedene Operationen mit Text ausführen, und dem „Einfügemodus“, wenn die Tasten entsprechende Zeichen einfügen. Es kann natürlich mehr Modi geben. Die meisten modernen Editoren sind nicht modal. Ein Beispiel für einen modalen Texteditor ist Vi (Vim).

Mark Karpov
quelle
Und was ist "Modal Editing"?
Lindydancer
@ Lindydancer, ich fügte meinen Versuch, das Konzept zu erklären, der Frage hinzu.
Mark Karpov

Antworten:

13

evil, der E xtensible VI L ayer für Emacs

Abgesehen von fragwürdigen Namen evilhandelt es sich um den aktuellen Stand der vimEmulation in Emacs (und möglicherweise auch anderswo). Es werden viele Funktionen unterstützt, auf die andere Vim-Emulationspakete verzichten, darunter:

  • vim Textobjekte
  • vim registriert
  • vim Tastaturmakros
  • ex befehle

Vorteile

  • Wichtige Kompatibilität vimbedeutet, dass Sie Ihr Muskelgedächtnis nicht verlieren, wenn Sie zu Systemen ohne Emacs wechseln.
  • Sehr ausgereift und weit verbreitet (viele Community-Pakete zum Beispiel)
    • Viele Pakete für vimwurden portiert evil.
  • vim Stil Grammatik ist modular und eignet sich sehr gut für Benutzererweiterung
  • evil selbst ist sehr erweiterbar: Erstellen Sie Ihre eigenen Textobjekte, Operatoren und Bewegungen!

Nachteile

  • Es wird wahrscheinlich ein wenig Fummelei erfordern, damit es mit anderen Paketen gut funktioniert
    • Glücklicherweise evilmacht das die gängigsten Use-Cases lächerlich einfach.
  • evilist ein sehr komplexes System. Das Hacken auf den bösen Kern kann ziemlich kompliziert werden.
  • vimTastenkombinationen sind nicht unbedingt ergonomisch optimal. Manchmal fühlen sie sich etwas willkürlich an, wenn sie auf ein anderes System portiert werden.
  • Hosted on BitBucket (mercurial) machen daraus, was Sie wollen.
PythonNut
quelle
Ich fand das Akronym böse für erweiterbare vi-Ebene für Emacs ein wenig geschmacklos.
Namens
@Name nicht meine Idee, aber wie?
PythonNut
aus einem Wörterbuch: böse = zutiefst unmoralisch und böswillig, verkörpert oder mit den Kräften des Teufels verbunden, schädlich, äußerst unangenehm, ...
Name
5
@Name als jemand, der sich den Namen "Name" gegeben hat, würde ich denken, dass Sie die Verwendung von Humor bei der Benennung von Dingen schätzen würden. :-) Im Falle des Bösen ist es Ironie (siehe en.wikipedia.org/wiki/Irony#Definitions ). Ich denke, es ist einer der besten Namen, die jemals für ein Emacs-Paket vergeben wurden, und würde dies als Vorteil vermerken!
Tarsius
@PythonNut Ich denke, die Verwendung von Bitbucket ist weniger ein Problem (eigentlich überhaupt kein Problem) als die Verwendung von Mercurial.
Tarsius
11

Es gibt god-mode( https://github.com/chrisdone/god-mode ), das Standard-Emacs-Tastenkombinationen verwendet, aber keine Modifikatoren mehr benötigt. Wenn Gott-Modus aktiviert ist, C-...erfordern Bindungen keinen Modifizierer und M-...Bindungen verwenden ein Präfix anstelle eines Modifizierers.

Als Beispiel von der Github-Seite:

Vorher: Cp Ck Cn M - Cj Cy Mr Cx zz M - 2 Mg Mg Cx Cs

Nachher: ​​pkng ^) jygr. . 2 ggxs

Stefan
quelle
1
Bitte erweitern Sie Ihre Antwort, damit es nicht nur ein Link ist.
Mark Karpov
@Stefan - Ich habe mir erlaubt, Ihre Antwort ein wenig zu erweitern. Fühlen Sie sich frei zu ändern, wie Sie möchten.
Glucas
glucas: Danke! @Mark: Da ich nichts mehr über Gott-Modus weiß, konnte ich meine Antwort nicht einfach erweitern. Ich habe es in der Hoffnung gepostet, dass jemand wie Glucas die Lücken füllen würde.
Stefan
6

Ich möchte mich bei @Mark für die Ermutigung bedanken.

Xah Fly Keys

Entwickelt von Grund auf für Emacs, mit dem Ziel das effizienteste System zu sein, basierend auf jahrelanger Erfahrung mit dem Ergoemacs-Modus. Die wichtigsten Entscheidungen basieren so weit wie möglich auf wissenschaftlichen Erkenntnissen, basierend auf Statistiken der Schlüsselhäufigkeit und der einfach zu bedienenden Schlüsselbewertung. Die am häufigsten verwendeten Befehle sind den am einfachsten zu bedienenden Tasten zugeordnet. Andere Themen, wie Gruppierung und Bigramm für die Tastenbelegung, werden ebenfalls nach dreijährigem wöchentlichem Experiment berücksichtigt.

Interessante Punkte:

  • Alle Cx-Befehle werden mit einer Folge von 2 bis 3 einzelnen Tasten ausgeführt. In xah-fly-keys ist Cx niemals notwendig. M- ist auch nie notwendig.
  • Widerspricht nicht den Schlüsseln eines GNU-Emacs, da es weder Strg noch Meta bindet (außer C-7, C-8, aber nicht unbedingt erforderlich). Sie können xah-fly-keys im Einfügemodus aktivieren und GNU Emacs wie gewohnt verwenden.
  • Berücksichtigt auch, welche Befehle zu maximaler Bearbeitungseffizienz führen. Das Paket verwendet also ~ 80 benutzerdefinierte Bearbeitungsbefehle. (Zum Beispiel wird beim Kopieren die aktuelle Zeile kopiert, wenn keine Auswahl vorhanden ist. Ein einziger Befehl zum Umschalten der Groß- / Kleinschreibung anstelle der ~ 6 Variationen von GNU Emacs von Upper / Lower / Region / No-Region.)
  • Die Implementierung ist so einfach wie möglich. Kein Makro, keine Beratung, keine komplexe Neuzuordnung von Schlüsseln, nur ein paar Haken werden verwendet. (gut oder schlecht?!)

Nachteile:

  • Wie beim ersten Lernen von vi benötigen Sie einen Monat, um sich zu verabschieden.
  • Nicht sehr bekannt. Gerade für den öffentlichen Gebrauch in diesem Monat freigegeben.
  • Derzeit wird nur das Dvorak-Layout unterstützt.
  • Noch kein praktisches Schlüsseldiagramm zum Lernen.
  • Für die Hauptmodi müssen Sie weiterhin Cc verwenden. (Sie können auch andere Pakete wie god-mode oder hydra verwenden, um dieses Problem zu lösen.)

Ich bin der Autor, seien Sie also gewarnt, dass ich unbewusst voreingenommen sein könnte. Fühlen Sie sich frei zu kommentieren oder zu korrigieren.

Xah Lee
quelle
Gibt es eine Chance, dass Sie andere Tastaturlayouts unterstützen? Ich weiß, dass ErgoEmacs es tut. Ich könnte es versuchen, aber die Hürde, zu Dvorak zu wechseln, ist zu hoch für ein gelegentliches Experiment.
PythonNut
@ PythonNut ja, oberste Priorität. Ich hoffe in einer Woche. Hauptsache ist, wie ich es umsetzen will.
Xah Lee
Ah. Sehr cool. Ich werde es drehen, wenn es herauskommt.
PythonNut
6

Modalka muss das neueste Kind im modalen Bearbeitungsblock sein. Das Github-Projekt scheint alle 10 Tage alt zu sein. Ich habe nicht genügend Zeit, um zu kommentieren oder zu bewerten, aber hier ist, wie es beschrieben wird:

Dies ist ein Baukasten, mit dem Sie in Emacs auf die modale Bearbeitung umsteigen können. Hauptziel des Pakets ist es, die Modalbearbeitung in Emacs so natürlich und nativ wie möglich zu gestalten. Es gibt keinen Hack, keine Eckfälle, keine Emulation - fangen Sie einfach an, modal zu bearbeiten, wie Sie wollen.

Die Dokumentation auch vergleicht und kontrastiert Modalka mit anderen üblichen modalen Lösungen, wie evil, god-mode, boonusw.

Emacs-Benutzer
quelle
4

Segen

Boon ist eines der weniger bekannten Pakete für die modale Bearbeitung. Es emuliert kein Vi (oder Vim), bietet jedoch ein für das Colemak-Tastaturlayout optimiertes Originallayout.

Vorteile und Konstruktionsprinzipien

  • Zuerst die räumliche Zuordnung, dann die Mnemonik: Die Zuordnung der Tasten zu den Befehlen richtet sich vorrangig nach den Positionen der Tasten auf der Tastatur. Was auch immer auf der Tastenkappe aufgedruckt ist, ist zweitrangig.

  • Leichte Fingerrollen: Die übliche Kombination sollte entweder eine Abwechslung zwischen der linken und rechten Hand oder einfache Einhandrollen sein.

  • Verwendung von Home Row und starken Fingern für die am häufigsten verwendeten Befehle

  • Einfache Navigation: Viele Befehle sind an die Navigation gebunden. Dies erleichtert das Bewegen. Da Bewegungen als Bereichsdefinitionen fungieren, werden Manipulationsbefehle (Operatoren) leistungsfähiger.

Nachteile

  • Sie müssen erneut lernen, wie Sie mit dem Editor interagieren, da die Sammlung von Bearbeitungsprimitiven und deren Platzierung auf der Tastatur einzigartig sind.
Mark Karpov
quelle
1
Es klingt ein bisschen seltsam, dass Boon sich nicht wirklich darum kümmert, was sich auf dem Schlüssel befindet, aber erzwingt, dass die Schlüssel Colemak sind. Es klingt, als sollte es layoutunabhängig sein.
PythonNut
@PythonNut, ich denke, die Leute müssen sich irgendwie auf die Tasten beziehen :-) Ich denke, es ist durchaus möglich, dass es mit anderen Layouts funktioniert.
Mark Karpov
Boon unterstützt jetzt QWERTY und QWERTZ, siehe github.com/jyp/boon#installation . Ich habe die Antwort entsprechend aktualisiert.
Raju-Bitter
3

Ergoemacs unterstützt auch die modale Bearbeitung. Es emuliert kein vi, verwendet jedoch die Alt-Taste für die am häufigsten verwendeten Befehle. Zum Beispiel ist das Bewegen des Cursors Alt plus rechts invertiertes T. (bei QWERTY Alt+ jfür left, Alt+ lfür rechts, Alt+ ifür upund Alt+ kfür down). Das Löschen von Zeichen oder Wörtern erfolgt Altmit den linken Startzeilentasten. Die Tastenauswahl basiert auf der Befehlsfrequenz und der Tastenposition, um das Drücken zu vereinfachen.

  • Um die modale Bearbeitung zu starten, kann der Benutzer drücken f6.
    • Einmal f6gedrückt, erfordern die am häufigsten verwendeten Tasten keine alternative Tastenkombination mehr.
    • Daher jist left, jist right, iist upund kist auf QWERTY unten).
  • Der modale Befehlsmodus wird durch Drücken von return, f6oder verlassen escape.

Neben dem traditionellen modal Paradigma gibt es eine quasi modal Paradigma , das jeder kann C-xoder C-cTastenkombination ohne Verwendung von Modifikatoren erreicht werden (wie Gott-Modus).

  • Das Quasi-Modal wird mit der QWERTZ apps ffür C-cbei gedrückter Steuertaste und der QWERTZ apps dfür gestartet C-x.
  • Während Sie diese Tastenfolge appsausführen, ändert die Taste die Art der Modifikatoren, von denen angenommen wird, dass sie gedrückt werden.
  • Sobald der Befehl aufgerufen wurde, nimmt ergoemacs den Bearbeitungsmodus wieder auf.
  • Während einer beliebigen Tastenfolge können Sie auch die gedrückten Tastentypen ändern. Dies geschieht durch erneutes Drücken der appsTaste.

Zusätzlich zum Ändern der Befehlstasten können Sie im Ergoemacs-Modus während der Eingabe Änderungen an der Tastenfolge vornehmen:

  • Sie können das Präfixargument während der Mitte einer Tastenfolge bearbeiten, indem Sie drücken f2.
  • Durch Drücken von backspacewird die zuletzt gedrückte Taste zurückgenommen.
  • Apps Mit dieser Option können Sie die Tasten ändern, die Sie während einer beliebigen Tastenfolge gedrückt halten.

ergoemacs-mode versucht auch, alles zu respektieren, was der Modus mit den Grundtasten macht. Wenn der next-lineOrganisationsmodus beispielsweise einen speziellen Schlüssel für definiert , verwendet ergoemacs diesen Befehl für Alt+, kwenn er sich im Organisationsmodus befindet .

Vorteile:

  • Teil von GNU Emacs, in ELPA.
  • Unterstützt "universelle" Windows / Linux-Schlüssel ab Werk. zB Öffnen ( C-o), Schließen ( C-w), Alles auswählen ( C-a), Kopieren ( C-c), Ausschneiden ( C-x), Einfügen ( C-v) usw.
  • Ziemlich beliebt.
  • Unterstützt viele Layouts, einschließlich Qwerty, Dvorak, Colemak, Bepo und viele andere internationale Layouts, mit denen die Tasten angepasst werden, um sicherzustellen, dass sie in der Startzeile sind (Mi in QWERTY wäre Mu in Colemak).
  • Zeigt ein Bild Ihres Tastaturlayouts in Emacs an, indem es das Thema beschreibt.
  • Die Tasten können über ein Erweiterungssystem angepasst werden, indem ein Thema erstellt wird.
  • Sie können eine beliebige modale Keymap einrichten (noch nicht dokumentiert).

Nachteile:

  • Beim Start ist Stable langsam.
    • Im instabilen Master ist der erste Start langsam (~ 5 Sekunden für minimale Einrichtung), (~ 20 Sekunden für meinen Start).
    • Der zweite Start ist viel schneller (für mein komplexes Setup sind es ~ 4 Sekunden).
    • Dies liegt daran, dass der Ergoemacs-Modus jede aktive Keymap in Emacs ändert und zwischenspeichert. Beim zweiten Start werden diese Einstellungen gespeichert.
  • Komplexer Code.

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

Matthew Fidler
quelle
2

Eine weitere semimodale Option ist Hydra:

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

Laut der Website

Stellen Sie sich vor, Sie haben Cc j und Cc k in Ihrer Konfiguration gebunden. Sie möchten Cc j und Cc k in einer beliebigen Reihenfolge aufrufen. Mit Hydra können Sie:

  • Binden Sie Ihre Funktionen so, dass das Drücken von Cc jjkk3j5k dem Drücken von Cc j Cc j Cc k Cc k M-3 Cc j M-5 Cc k entspricht. Jede andere Taste als j oder k verlässt diesen Zustand.

  • Weisen Sie dieser Gruppe von Funktionen einen benutzerdefinierten Hinweis zu, sodass Sie unmittelbar nach dem Drücken von Cc wissen, dass Sie j oder k nachziehen können.

Ich habe es nicht benutzt, aber es scheint interessant zu sein.

Matthew Fidler
quelle