Gibt es eine Standard- / empfohlene Syntax zum Definieren einer Tastaturbindung?


10

Ich habe alle folgenden Punkte zum Definieren einer Tastaturbindung gesehen. All dies funktioniert (zumindest unter MS Windows). Ich weiß nicht, ob es einen anderen Weg gibt, dasselbe zu tun.
Ich frage mich, ob es einen Standard oder eine empfohlene Methode zum Definieren einer Tastaturbindung gibt und ob es empfohlen wird, einige davon zu vermeiden.

(global-set-key "\M-r" 'some-command)
(global-set-key [(meta r)] 'some-command)
(global-set-key [?\M-r] 'some-command)
(global-set-key (kbd "M-r") 'some-command)

1
Ich bezweifle, dass es eine empfohlene Syntax gibt, aber ich persönlich mag die (global-set-key (kbd "M-r") 'some-command)Methode wegen der Konsistenz, in der die Tastenkombinationen definiert werden können. Sie müssen sich nicht erinnern, wann oder wann Sie nicht entkommen müssen.
Kaushal Modi

Antworten:


6

Es gibt keinen einheitlichen Standardweg, da es unterschiedliche Anwendungsfälle gibt.

Wenn Sie solchen Code manuell schreiben, beispielsweise in Ihre Init-Datei, bevorzugen Sie möglicherweise das (kbd ...)Format, da das Argument kbddieselbe Notation verwendet, die Emacs verwendet, wenn es mit Ihnen über Schlüsselbindungen kommuniziert ( *Help*z. B. in).

Wenn Sie jedoch Bindungen mit Emacs Lisp erstellen, bevorzugen Sie möglicherweise die Vektornotation, insbesondere [(meta r)]usw., da die Verwaltung erheblich einfacher ist.

Einige Leute halten den einfachen String-Ansatz für archaisch, aber er ist praktisch, wenn der Schlüssel einfach ist: Er "a"ist einfacher und mindestens so lesbar wie (kbd "a"). Einfache Zeichenfolgen sind jedoch schwieriger zu lesen / zu verwenden, wenn es um Modifizierertasten usw. geht.


6
(global-set-key [?\M-r] 'some-command)

ist der "native" Weg. Alle anderen bauen im Grunde genommen auf diesem auf.

Durch die Nutzung unserer Website bestätigen Sie, dass Sie unsere Cookie-Richtlinie und Datenschutzrichtlinie gelesen und verstanden haben.
Licensed under cc by-sa 3.0 with attribution required.