堆栈溢出!在过去的几天里,我尝试对emacs进行一些自定义,但遇到了我不知道该如何处理的问题。
我想做的是定义一个全局键绑定(bind)和一个ido模式键绑定(bind),它们将使用相同的键来执行不同的操作。
身份模式键绑定(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-indent。有趣的是,当我交互使用全局设置键时(即不是从init文件而是从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 - 全局设置 key 掩盖的ido模式绑定(bind),我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/9877557/