我创建一个自定义键绑定宏如下:Emacs的取消绑定模式的键绑定
(global-set-key (kbd "C-C C-c") "\C-a\C- \C-n\M-w\C-y")
的问题是,C-c C-c
为python-send-buffer
在python-mode
定义。所以我的宏适用于除python模式以外的所有模式。我假设python-mode
在我的初始化文件后被评估,因此它会覆盖该键绑定。
我尝试不使用C-c C-c
使用(eval-after-load "python-mode")
和使用global-unset-key
但这不起作用。 python中的C-c C-c
总是映射到python-send-buffer
。
我该如何完全禁用Python的C-c C-c
,并改用我的宏?
我正在使用Emacs 24.2.1。
C-C C-C是很多模式的定义。也许你应该考虑http://stackoverflow.com/questions/683425/globally-override-key-binding-in-emacs – scottfrazer
或者只是考虑使用不同的密钥。 'Cc'后跟一个控制键(如'Cc')是“为主要模式保留的”,这意味着定义主要模式的Lisp代码有权使用它(并且它们通常使用'Cc Cc',就像ScottFrazer说过)。当然,用户仍然有权绑定这样的密钥,但只是知道主要模式也会随意这样做,因此您可能需要找到替换密钥以用于此类模式(请参阅此处的答案) 。请参阅Elisp手册,节点“键绑定约定”。 – Drew
@Drew我似乎无法找到一个免费且易于访问的C-x绑定,或者对于我经常使用的复制和粘贴操作有意义。 – darksky