是否有一个全局覆盖键绑定的命令,以便它甚至覆盖主要模式的本地设置? global-set-key被主要模式绑定覆盖,如下所述:http://www.gnu.org/software/emacs/manual/html_node/emacs/Rebinding.html
答案 0 :(得分:6)
不,没有(内置)方法来设置覆盖所有其他键的绑定。查看Emacs如何通过阅读"Searching the Active Keymaps"来搜索键映射。
您可以将overriding-terminal-local-map
或overriding-local-map
设置为包含所需绑定的键盘映射,但这会阻止您的缓冲区使用任何缓冲区/覆盖/次模式键盘映射,几乎会阻止大多数Emacs。
Emacs查找绑定的下一个区域位于当前点的character属性中 - 可能并未在整个地方使用,但它是覆盖绑定的一种方式(除非您使用字符属性进行定义)你的钥匙到处都是,非常icky)。
Emacs看起来的下一个地方是变量emulation-mode-map-alists
,这可能是你最好的选择。它设置用于在需要处理多个小模式键盘映射的情况下使用的包。
制作全球次要模式(请参阅Defining Minor Modes),将您的密钥绑定放入其中,将次要模式和键盘映射添加到emulation-mode-map-alists
,然后启用您的未成年人模式。
现在,您的密钥绑定优先于所有其他密钥,但emulation-mode-map-alist
列表中较早的密钥绑定或字符属性中的密钥绑定或overriding-local-map
中的密钥绑定...
我相信这是你能做的最好的事情,不用黑客攻击Emacs来源。
答案 1 :(得分:5)
在小模式键绑定覆盖我的个人全局绑定的情况下,我有幸使用add-hook + local-unset-key
(add-hook'undo-tree-mode (lambda() (local-unset-key“C - /”)))