Konvention über die Verwendung von Cx oder Cc als Präfixschlüssel

16

Was sind die Konventionen für die Verwendung C-x, C-coder M-als Präfix Schlüssel?

Zum Beispiel: dient C-xusw. zum Speichern oder Aufrufen von Puffern? Ist C-cfür die Textbearbeitung usw.?

Hintergrund

Vielleicht ist das eine dumme Frage. Ich verwende eine spanische Tastatur und definiere manchmal die Tastaturbelegungen neu, die für eine englische (QWERTY) Tastatur üblich sind. Beispiel: Der Shell-Befehl ist in Vanille Emacs an gebunden M-!. Ich binde es M-¡stattdessen an, weil es M-!ist M-shift-1, was ich nicht leicht drücken kann. Ich frage mich, ob es Konventionen gibt, die ich überschreibe, wenn ich solche Änderungen vornehme

anquegi
quelle
like M-xis for "Erweiterten Befehl ausführen. Dies ist das Tor zu vielen hochentwickelten Funktionen, die Sie interaktiv in Emacs ausführen können. Sie können jede Elisp-Funktion nach Namen ausführen." hat C-cund C-xnicht eine Beschreibung wie diese?
Pinocchio

Antworten:

21

Wenn Sie über das Binden von Schlüsseln für den eigenen Gebrauch sprechen, gilt folgende Regel: Sie können beliebige Schlüssel binden.

Wenn Sie sicher sein möchten, dass Sie keinen möglicherweise bereits gebundenen Schlüssel binden, verwenden Sie C-cgefolgt von einem Buchstaben. Alle diese Schlüssel sind für Benutzer reserviert (siehe weiter).


Wenn Sie über das Binden von Schlüsseln in Code (z. B. einer Bibliothek) sprechen, die Sie für die Verwendung durch andere schreiben, werden die Regeln (Konventionen) hier beschrieben: Knoten Schlüsselbindungskonventionen des Elisp-Handbuchs.

Die wichtigsten Regeln in Bezug auf das, was Sie fragen, sind folgende C-c:

  • Definieren Sie nicht C-c LETTERals Schlüssel in Lisp-Programmen. Sequenzen bestehend aus C-cund einem Buchstaben (entweder in Groß- oder Kleinschreibung) sind für Benutzer reserviert; Sie sind die einzigen Sequenzen, die für Benutzer reserviert sind. Blockieren Sie sie daher nicht.

  • Sequenzen, C-cdenen ein Steuerzeichen oder eine Ziffer folgt, sind für Hauptmodi reserviert.

  • Sequenzen aus , C-cgefolgt von {, }, <, >, : oder ;auch für Hauptmodi vorbehalten.

  • Sequenzen, die aus C-cgefolgt von anderen ASCII-Interpunktionszeichen oder Symbolzeichen bestehen, werden für untergeordnete Modi zugewiesen. Die Verwendung in einem Hauptmodus ist nicht absolut verboten. Wenn Sie dies jedoch tun, kann die Bindung des Hauptmodus von Zeit zu Zeit durch Nebenmodi beeinträchtigt werden.

Sie werden feststellen, dass diesbezüglich keine Konvention besteht C-x. Eine nicht angegebene Konvention oder nur ein guter Rat / eine gute Praxis ist jedoch die folgende: Wenn Sie eine vorhandene Standard-Emacs-Bindung ersetzen (dh eine, die Sie von Emacs als verteilt erhalten, ohne Bibliotheken von Drittanbietern zu laden), kann dies zu Verwirrung führen oder Ärgern Sie einige Benutzer Ihres Codes.


Sie können dieses Dokument in Emacs folgendermaßen aufrufen:

  1. C-h i, um Info, den Doc-Browser, zu öffnen.
  2. m el TAB RET, Für m enu el isp ( TABauf vollständig), oder klicken Sie einfach auf den ElispLink mit der Maus.
  3. key bi TAB, dann n TAB RETzu vervollständigen Key Binding Conventions.

Oder Sie können iim Elisp-Handbuch Folgendes verwenden, um Indexeinträge zu vervollständigen:

  1. C-h i m el TAB RET.
  2. i key bi TABDies ergänzt key bindingund zeigt Ihnen zwei Möglichkeiten: key bindingund key binding, conventions for. Geben Sie ein, , TABum die Eingabe bis zur Sekunde abzuschließen, und RETakzeptieren Sie sie dann.
Drew
quelle
Es ist besser, die Konvention zu befolgen, um C-cBenutzerbefehle zu binden und mit Buchstaben zu versehen. Auf diese Weise kann man (fast) sicher sein, dass man keine andere Bindung von einem bereits installierten oder zukünftig zu installierenden Hauptmodus überschreibt.
Tobias
1
@Tobias: Nicht sicher, was du sagst. Besser als was? Alle Schlüsselbindungskonventionen sollten befolgt werden, auch nicht bindende C-c+ LETTER in Bibliotheken von Drittanbietern.
Drew
Sie haben in den ersten Sätzen Ihrer Antwort richtig angegeben, dass es keine strengen Regeln für den privaten Gebrauch gibt. Trotzdem ist es aus den Gründen, die ich in meinem ersten Kommentar angegeben habe, ratsam, die Konventionen für Benutzer-Tastenkombinationen zu befolgen. Vielleicht können Sie einen Hinweis dazu hinzufügen, dass im ersten Abschnitt alles in Ordnung ist . Das ist alles, was ich sagen wollte, Drew. Viele Grüße,
Tobias
3
@Tobias: Ich habe hinzugefügt, was ich denke, dass Sie sagen; Vielen Dank. Es gibt jedoch keine Konventionen für einen Benutzer in Bezug auf die Tastenbelegung. Die "Konventionen für Benutzer-Tastenkombinationen" , von denen Sie sprechen, sind keine Konventionen für Benutzer. Dies sind Konventionen zum Codieren von Lisp, die von anderen verwendet werden. (Ich weiß, dass Sie das wissen. Ich möchte nur klar sein, für alle anderen, die dies lesen.)
Drew
Was ist ein Kontrollcharakter?
Didier A.
2

@Drews Antwort ist viel differenzierter und detaillierter.

Dies ist eine vollkommen berechtigte Frage! Es gibt die Konvention, dass das C-xvon Emacs selbst reserviert wird, während das C-cPräfix für benutzerdefinierte Tastenkombinationen verwendet wird.

Schauen Sie sich dies an , insbesondere den Abschnitt "Reservierte Schlüssel". Ich bin mir ziemlich sicher, dass diese Informationen auch im Emacs-Handbuch enthalten sind, aber ich kann sie derzeit anscheinend nicht finden. Die Konventionen werden in diesem Abschnitt des emacs lisp-Handbuchs beschrieben.

Panagiotis Koutsourakis
quelle
1
C-cgefolgt von einem Buchstaben (Groß- oder Kleinschreibung) ohne weitere Modifikatoren ist den Benutzern vorbehalten. Viele andere Tastenfolgen, die mit beginnen, C-csind für Hauptmodi reserviert - insbesondere solche, bei denen der zweite Tastendruck ebenfalls durch die Steuertaste geändert wird.
Tobias
Sie haben natürlich recht. @Drew hat diese Frage viel besser beantwortet.
Panagiotis Koutsourakis
like M-xis for "Erweiterten Befehl ausführen. Dies ist das Tor zu vielen hochentwickelten Funktionen, die Sie interaktiv in Emacs ausführen können. Sie können jede Elisp-Funktion nach Namen ausführen." hat C-cund C-xnicht eine Beschreibung wie diese?
Pinocchio