2014-06-12 12 views
6

Laut der Emacs' manual, Modifier-Tasten sind aus "historischen Gründen" Groß-und Kleinschreibung nicht berücksichtigt.Wie erstelle ich eine Groß- und Kleinschreibung in Emacs?

Kann ich dieses Verhalten ändern?

Mein Ziel ist es, M-a und M-A verschiedene Dinge zu bedeuten.

Danke!

+0

Soweit ich weiß, sind sie nur als Groß- und Kleinschreibung behandelt, wenn es nur eine Schlüsseldefinition ist. Wenn Sie zwei - d. H. Eine Klein- und eine Großbuchstaben-Definition - erstellen, werden diese nicht mehr als Groß- und Kleinschreibung behandelt. Die Verwendung der Methode, die Sie suchen, ist sehr häufig. Zum Beispiel, '(global-set-key [? \ S-m] 'minimieren)' und '(global-set-key [? \ S-M]' maximieren)' – lawlist

Antwort

8

Laut Handbuch,

A Steuerung -modifizierte alphabetisches Zeichen immer Groß- und Kleinschreibung in Betracht gezogen wird: Emacs immer behandelt C-A als C-A, C-B, wie C-B, und so weiter. Der Grund dafür ist historisch.

So konnte man nicht definieren sie mögen:

(global-set-key (kbd "C-a") 'xxx) 
(global-set-key (kbd "C-A") 'yyy) 

aber S- kann für Shift- verwendet werden, so:

(global-set-key (kbd "C-a") 'xxx) 
(global-set-key (kbd "C-S-a") 'yyy) ;; C-A 

OK ist. Und

Für alle anderen Modifikatoren können Sie die geänderten alphabetischen Zeichen Groß- und Kleinschreibung beachten, wenn Sie Emacs anpassen. Zum Beispiel könnten Sie M-a und M-A verschiedene Befehle ausführen lassen.

So können Sie definieren Schlüssel-Bindung wie folgt aus:

(global-set-key (kbd "M-a") 'xxx) 
(global-set-key (kbd "M-A") 'yyy) 
+0

Das mache ich eigentlich ziemlich oft. Es bedeutet jedoch, im Dokument für meinen Code aufzurufen, dass "C-A" auch "C-S-a" genannt wird (oder umgekehrt). Emacs selbst verwendet immer die letztere Notation mit dem expliziten Shift-Modifikator. – Drew