我有一个小问题,我有一些像C-. C-x或C-. C-m这样的键绑定。在我激活flyspell-mode之后,我不能使用这些命令。在我的.emacs文件中,我有下面两行代码
(global-unset-key (kbd "C-."))
(define-key (current-global-map) (kbd "C-.") nil)
(global-set-key (kbd "C-. C-l") 'global-linum-mode) 然后,我的C-. C-l可以工作了,但是当flyspell模式被激活时,它就不能工作了。绑定到C-.的命令是flyspell-auto-correct-word。我试着停用它,如下所示:
;; first try
(defun flyspell-auto-correct-word-disable() (define-key (current-local-map) (kbd "C-.") nil))
(add-hook 'flyspell-mode-hook 'flyspell-auto-correct-word-disable)
;; second try
(define-key (current-global-map) [remap flyspell-auto-correct-word] nil)所有的尝试都不起作用,我能做什么?我在Emacs 23和24中尝试过,也遇到了同样的问题。
发布于 2013-04-18 22:16:46
下面是什么:
(eval-after-load "flyspell"
'(define-key flyspell-mode-map (kbd "C-.") nil))您的第一个解决方案几乎是正确的,但您必须记住,当前的本地地图是由主模式设置的,而不是次模式。最好的选择是直接访问flyspell-mode-map并修改它(另一种选择是在minor-mode-map-alist中找到它,但我认为这将是不必要的复杂)。
此外,我更喜欢将这种特定于模式的设置放在eval-after-load中(这意味着它们将被评估一次),而不是放在一个钩子中(在这种情况下,这些设置会被评估多次:每次一个缓冲区激活flyspell-mode)。但这是一个偏好问题,无论哪种方式都可以。
https://stackoverflow.com/questions/16084022
复制相似问题