我有这个小问题,我有一些像C-. C-x
或C-. C-m
这样的键绑定(bind)。激活flyspell模式后,将无法使用这些命令。在我的.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-mode时不起作用。绑定(bind)到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中尝试过,但遇到了同样的问题。
最佳答案
关于什么:
(eval-after-load "flyspell"
'(define-key flyspell-mode-map (kbd "C-.") nil))
您的第一个解决方案几乎是正确的,但是您必须记住,当前的本地 map 是由主要模式而非次要模式设置的。您最好的选择是直接访问
flyspell-mode-map
并对其进行修改(另一种选择是在minor-mode-map-alist
中找到它,但我认为它会不必要地复杂)。另外,我更喜欢将这种特定于模式的设置放在
eval-after-load
中(这意味着它们将被评估一次),而不是放在一个钩子(Hook)中(在这种情况下,设置将被评估多次:每次一个缓冲区激活flyspell-mode
)。但这是优先考虑的问题,任何一种方法都可以。关于emacs,flyspell,停用 "C-."键绑定(bind),我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/16084022/