Czy istnieje standardowa / zalecana składnia do definiowania wiązania klawiatury?

10

Widziałem wszystkie poniższe definicje powiązania klawiatury. Wszystkie te działają (przynajmniej w MS Windows). Nie wiem, czy jest inny sposób na zrobienie tego samego.
Zastanawiam się, czy istnieje standardowy lub zalecany sposób definiowania wiązania klawiatury i czy zaleca się unikanie niektórych z nich.

(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)
Imię
źródło
1
Wątpię, czy istnieje zalecana składnia, ale osobiście podoba mi się ta (global-set-key (kbd "M-r") 'some-command)metoda ze względu na spójność, w jakiej można zdefiniować kombinacje klawiszy. Nie musisz pamiętać, kiedy i kiedy nie należy uciec.
Kaushal Modi

Odpowiedzi:

6

Nie ma jednego standardowego sposobu, ponieważ istnieją różne przypadki użycia.

Jeśli piszesz taki kod ręcznie, na przykład w pliku init, możesz preferować (kbd ...)format, ponieważ argument kbdużywa tej samej notacji, której używa Emacs, gdy komunikuje się z tobą o powiązaniach klawiszy ( *Help*na przykład).

Ale jeśli tworzysz powiązania za pomocą Emacsa Lispa, możesz preferować notację wektorową, w szczególności [(meta r)]itp., Ponieważ jest ona o wiele łatwiejsza w zarządzaniu.

Niektórzy uważają, że proste podejście łańcuchowe jest archaiczne, ale jest przydatne, gdy klucz jest prosty: "a"jest prostszy i przynajmniej tak czytelny jak (kbd "a"). Ale proste ciągi są trudniejsze do odczytania / użycia, jeśli chodzi o klawisze modyfikujące itp.

Rysował
źródło
6
(global-set-key [?\M-r] 'some-command)

jest „rodzimym” sposobem. Zasadniczo wszystkie inne są zbudowane na podstawie tego.

Stefan
źródło