首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >emacs,flyspell,停用“C-”键绑定

emacs,flyspell,停用“C-”键绑定
EN

Stack Overflow用户
提问于 2013-04-18 21:15:11
回答 1查看 1.2K关注 0票数 5

我有一个小问题,我有一些像C-. C-xC-. C-m这样的键绑定。在我激活flyspell-mode之后,我不能使用这些命令。在我的.emacs文件中,我有下面两行代码

代码语言:javascript
复制
(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。我试着停用它,如下所示:

代码语言:javascript
复制
;; 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中尝试过,也遇到了同样的问题。

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2013-04-18 22:16:46

下面是什么:

代码语言:javascript
复制
(eval-after-load "flyspell"
  '(define-key flyspell-mode-map (kbd "C-.") nil))

您的第一个解决方案几乎是正确的,但您必须记住,当前的本地地图是由主模式设置的,而不是次模式。最好的选择是直接访问flyspell-mode-map并修改它(另一种选择是在minor-mode-map-alist中找到它,但我认为这将是不必要的复杂)。

此外,我更喜欢将这种特定于模式的设置放在eval-after-load中(这意味着它们将被评估一次),而不是放在一个钩子中(在这种情况下,这些设置会被评估多次:每次一个缓冲区激活flyspell-mode)。但这是一个偏好问题,无论哪种方式都可以。

票数 11
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/16084022

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档