sil*_*gon 5 emacs elisp flyspell emacs24
我有这个小问题,我有一些按键绑定像这样C-. C-x
或C-. C-m
.激活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)
Run Code Online (Sandbox Code Playgroud)
然后,我的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)
Run Code Online (Sandbox Code Playgroud)
没有尝试有效,我该怎么办?我在Emacs 23和24中尝试过,我遇到了同样的问题.
ffe*_*tte 10
关于什么:
(eval-after-load "flyspell"
'(define-key flyspell-mode-map (kbd "C-.") nil))
Run Code Online (Sandbox Code Playgroud)
您的第一个解决方案几乎是正确的,但您必须记住,当前的本地地图是由主要模式设置的,而不是次要模式.你可以直接访问flyspell-mode-map
和修改它的最佳选择(另一种选择是找到它,minor-mode-map-alist
但我认为这将是不必要的复杂).
此外,我更喜欢将这种特定于模式的设置放入eval-after-load
(这意味着它们将被评估一次)而不是在钩子中(在这种情况下,设置被多次评估:每次激活一个缓冲区时flyspell-mode
).但这是一个偏好问题,无论哪种方式都很好.