emacs - 全局覆盖 emacs 键绑定(bind)

标签 emacs elisp key-bindings

是否有一个命令可以全局覆盖键绑定(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-mapoverriding-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/

相关文章:

Emacs shell-模式 : Prevent RET sending input from anywhere

emacs - 如何在 emacs 的 c-mode 中启用自动填充?

Emacs 可怕的行为

variables - Emacs 中的动态项目范围变量

key-bindings - 切换到 tmux 中的最后一个事件 session

visual-studio-2012 - 如何将 Microsoft Visual Studio 2012 前进/后退按钮映射到鼠标前进/后退按钮?

emacs - 如果要编程Emacs,ELisp要学习的最重要部分是什么?

lambda - 为什么要尖锐地引用 lambda 表达式?

emacs - 你如何编写一个 emacs lisp 函数来替换一个单词?

eclipse - 如何在 Eclipse 中禁用 Ctrl Alt M?