Emacs解除模式绑定';s键绑定
我创建了一个自定义键绑定宏,如下所示:Emacs解除模式绑定';s键绑定,emacs,key-bindings,emacs24,python-mode,Emacs,Key Bindings,Emacs24,Python Mode,我创建了一个自定义键绑定宏,如下所示: (全局设置键(kbd“C-C-C”)“\C-a\C-\C-n\M-w\C-y”) 问题是C-C-C是在python模式下为python发送缓冲区定义的。因此,我的宏适用于除python模式之外的所有模式。我假设python模式是在我的init文件之后计算的,因此它会覆盖该键绑定 我尝试使用(加载后评估“python模式”)和全局取消设置键来取消设置C-C-C,但这不起作用C-C C-C始终映射到python发送缓冲区 我怎样才能完全禁用Python的C-C
(全局设置键(kbd“C-C-C”)“\C-a\C-\C-n\M-w\C-y”)
问题是C-C-C
是在python模式下为python发送缓冲区
定义的。因此,我的宏适用于除python模式之外的所有模式。我假设python模式
是在我的init文件之后计算的,因此它会覆盖该键绑定
我尝试使用(加载后评估“python模式”)
和全局取消设置键来取消设置C-C-C
,但这不起作用C-C C-C
始终映射到python发送缓冲区
我怎样才能完全禁用Python的C-C-C
,而改用我的宏呢
我正在使用Emacs 24.2.1。这应该可以做到:
(add-hook 'python-mode-hook
(lambda()
(define-key python-mode-map (kbd "C-c C-c") nil)))
C-C-C定义了很多模式。也许你应该考虑或者只是考虑使用一个不同的键。code>C-C
后跟一个控制键(如C-C
)是“为主要模式保留的”,这意味着定义主要模式的Lisp代码有权使用它(正如ScottFrazer所说,他们通常使用C-C-C
)。当然,用户仍然有权绑定这样的密钥,但只需知道主要模式也可以自由绑定,因此您可能需要找到一个替换密钥来用于这些模式(请参见此处的答案)。请参阅Elisp手册,节点关键绑定约定
@Drew我似乎找不到一个免费且易于访问的C-x绑定/对于我经常使用的复制和粘贴来说是有意义的。这个问题不是重复的,因为那里的答案不建议使用添加挂钩
,但是OP声明他们使用了addhook
,但它不起作用。将此问题标记为该问题的副本具有误导性。这个问题的答案在我的情况下不起作用,这就是我发布这个问题的原因。@Darsky:那就不要用前缀C-x
。你还有很多钥匙。请参阅为用户保留密钥的手册,密钥绑定约定。(您也可以绑定任何其他键,但它们可能会覆盖模式键等)并且您可以定义自己的前缀键:例如,您可以将
作为您自己的部分或全部键的前缀。
(add-hook 'python-mode-hook
(lambda()
(local-unset-key (kbd "C-c C-c"))))