堆栈溢出!在过去的几天里,我试图对我的 emacs 进行一些定制,但遇到了我不知道如何解决的问题。
我要做的是定义一个全局键绑定(bind)和一个 ido 模式键绑定(bind),它们将使用相同的键来做不同的事情。
Ido-mode 键绑定(bind)是这样定义的:
(defun ido-my-keys ()
"Add my keybindings for ido."
(define-key ido-completion-map (kbd "M-<return>")
'ido-invoke-in-vertical-split)
)
(add-hook 'ido-setup-hook 'ido-my-keys)
它工作正常,直到我将以下行放在我的 .emacs 文件中:
(global-set-key (kbd "M-<return>") 'insert-newline-and-indent)
有了这一行,M-return 甚至从 ido-switch-buffer 调用 insert-newline-and-indent。有趣的是,当我以交互方式使用 global-set-key 时(即不是来自 init-file 而是来自 M-x 调用),一切都按预期工作。
谢谢你的帮助。对不起我的英语不好。
问题出在我打开的 ergoemacs 模式下。此模式为导致此效果的 global-set-key 定义了一个建议。
我通过将 global-set-key 调用移到 ergoemacs 初始化之上来解决了这个问题。不是最好的解决方案,而是一个简单的解决方案。
最佳答案
该问题是由 ergoemacs-keybindings 包引起的,或者更具体地说,是由 ergoemacs-mode.el 引起的
这个包为 global-set-key 定义了一个建议,实际上,用它自己的 ergoemacs-global-set-key 替换它。但是由于 ergoemacs 是一种次要模式,它的键映射比全局映射具有更高的优先级,因此覆盖了 ido 次要模式的键绑定(bind)。
我看到了该问题的三个解决方案:
关于emacs - 由 global-set-key 屏蔽的 ido-mode 绑定(bind),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9877557/