是否有一个命令可以全局覆盖键绑定(bind),以便它甚至覆盖主要模式的本地设置? global-set-key 被主要模式绑定(bind)覆盖,如下所述:http://www.gnu.org/software/emacs/manual/html_node/emacs/Rebinding.html
最佳答案
不,没有(内置)方法可以设置覆盖所有其他键绑定(bind)。通过阅读 "Searching the Active Keymaps" 来了解 Emacs 如何搜索键盘映射。 .
您可以将 overriding-terminal-local-map
或 overriding-local-map
设置为包含您想要的绑定(bind)的键盘映射,但这会阻止您的缓冲区具有任何缓冲区/覆盖/次要模式键盘映射,几乎禁用大多数 Emacs。
Emacs 寻找绑定(bind)的下一个区域是当前点的字符属性 - 它可能不会到处使用,但这是覆盖绑定(bind)的一种方式(除非您用字符属性来定义)你的 key 到处都是,真恶心)。
Emacs 下一个查找的地方是变量 emulation-mode-map-alists
,这可能是您最好的选择。它是为要处理多个次要模式键盘映射的情况而设置的包。
创建一个全局次要模式(请参阅 Defining Minor Modes ),将您的按键绑定(bind)放在那里,将您的次要模式和键盘映射添加到emulation-mode-map-alists
,然后打开您的次要模式。
您的按键绑定(bind)现在将优先于所有其他按键绑定(bind),除了 emulation-mode-map-alist
列表中较早的按键绑定(bind)、或在角色属性中找到的按键绑定(bind)或在 overriding-local 中找到的按键绑定(bind)- map
...
我相信这是你能做的最好的事情,无需破解 Emacs 源代码。
关于emacs - 全局覆盖 emacs 键绑定(bind),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5332221/