Emacs: Wie wählt man gute benutzerdefinierte Tastenkombinationen aus?

10

Ich bin ein Anfänger Emacs und ich möchte für allgemeine Aufgaben wie das Hinzufügen einige globale benutzerdefinierte Tastenbelegungen starten replace-string, replace-regexusw., die sie nicht standardmäßig haben. Ich möchte gute Entscheidungen treffen und sehe einige Probleme:

  • Alle meine Optionen anzeigen - Wie kann ich den gesamten Tastenbereich anzeigen, der in allen Modi, die ich regelmäßig verwende, nicht gebunden ist?

  • Kompatibilität / Konvention - Gibt es gemeinsame inoffizielle Bindungen oder einen gemeinsamen "User-Space" -Schlüssel, mit dem persönliche benutzerdefinierte Bindungen beginnen können?

  • Andere Probleme - Was sollte ich sonst noch berücksichtigen?

Ian Mackinnon
quelle

Antworten:

9

Schauen Sie sich diese Frage zu SO an: Gibt es Emacs-Tastenkombinationen, die für benutzerdefinierte Befehle reserviert sind?

In Bezug auf die Verfügbarkeit gibt es die unboundBibliothek (siehe die erste Antwort auf die obige Frage).

Eine Konvention (aus meiner Antwort auf diese Frage entnommen ) ist:

Sie können alles neu definieren, aber die Konvention ist zu verwenden C-c l (wo list ein Buchstabe).

Als Benutzer können Sie einen beliebigen Schlüssel neu definieren. In der Regel ist es jedoch am besten, sich an Tastenfolgen zu halten, die aus C-c einem Buchstaben (Groß- oder Kleinbuchstaben) bestehen. Diese Schlüssel sind "für Benutzer reserviert", sodass sie nicht mit einer ordnungsgemäß gestalteten Emacs-Erweiterung in Konflikt stehen. Die Funktionstasten F5durch F9sind ebenfalls für Benutzer reserviert. Wenn Sie einen anderen Schlüssel neu definieren, wird Ihre Definition möglicherweise von bestimmten Erweiterungen oder Hauptmodi überschrieben, die denselben Schlüssel neu definieren.

Denken Sie daran, dass die Tastenkombinationen in den verschiedenen (Haupt- und Neben-) Modi unterschiedlich sind, sodass das, was in einem Puffer verfügbar ist, nicht unbedingt in einem anderen verfügbar ist. Und machen Sie Ihre Schlüsselbindungen so lokal wie möglich. Zum Beispiel, wenn die Funktionalität etwas zu einer Codezeile funktioniert, keinen globalen Schlüssel macht für sie verbindlich, definieren sie in den entsprechenden keymaps ( c++-mode-map, ruby-mode-mapusw.).

Haben Sie bei Ihren spezifischen Aufgaben Folgendes bemerkt:

  • M-% aka query-replace
  • C-M-% aka query-replace-regexp

Wenn Sie suchen ( C-soder C-M-s(und die umgekehrten Varianten)), können Sie M-%(oder C-M-%) eingeben, um direkt query-replace( query-replace-regexp) mit der Suchzeichenfolge als Ersatz zu eingeben ... Ziemlich praktisch.

Trey Jackson
quelle