如何在Emacs中创建区分大小写的键绑定?

时间:2014-06-12 05:25:27

标签: emacs elisp key-bindings case-sensitive

根据Emacs' manual,由于"历史原因",修饰键不区分大小写。

我可以更改此行为吗?

我的目标是让M-aM-A表示不同的事情。

谢谢!

1 个答案:

答案 0 :(得分:8)

根据手册,

  

Control - 修改后的字母字符始终被视为不区分大小写:Emacs始终将C-A视为C-a,将C-B视为C-b,依此类推。其原因是历史性的。

所以你无法定义它们:

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

S-可用于 Shift ,所以:

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

没关系。和

  

对于所有其他修饰符,您可以在自定义Emacs时使修改后的字母字符区分大小写。例如,您可以使M-a和M-A运行不同的命令。

所以你可以像这样定义键绑定:

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