我有一个包(邪恶),与ansi-term不一致。当term-mode处于活动状态时,我试图让emacs禁用邪恶模式。我使用以下命令尝试这样做
(add-hook 'term-mode-hook (lambda() (evil-mode -1)) )
然而,一旦我打开ansi-term,这会以某种方式禁用每种模式中的邪恶模式,除了term-mode。任何帮助将不胜感激。
答案 0 :(得分:4)
快速查看代码显示evil-mode
是全局次要模式,因此会影响所有缓冲区。
提供函数turn-on-evil-mode
和turn-off-evil-mode
仅用于启用或禁用当前缓冲区的邪恶(这些函数启用或禁用evil-local-mode
,这是每缓冲区模式),但是全局次要模式在模式挂钩运行后启用(参见automatically disable a global minor mode for a specific major mode),因此最好查看全局模式是否具有在特定情况下禁用自身的内置支持。
在邪恶模式的情况下,看起来各种“状态”选项促成了这一点,“Emacs状态”("emacs"
)禁用所有Evil键绑定,(evil-set-initial-state MODE STATE)
让配置指定主模式的默认状态。
因此,除非不兼容性比键绑定更深入,否则我认为在加载Evil库之后,以下内容将起作用:
(evil-set-initial-state 'term-mode "emacs")
答案 1 :(得分:3)
我很惊讶地重现了这个潜在的错误。
解决方案是在术语缓冲区中使用C-z
;它将摆脱邪恶模式。
答案 2 :(得分:2)
我无法在我的设置中重现这一点(Emacs 24.3,来自MELPA的最新Evil)。试试这个:
(add-hook 'term-mode-hook 'evil-emacs-state)
或
(add-hook 'term-mode-hook 'evil-insert-state)
这对我有用。 (我通常使用插入状态,因为我可以快速跳到正常状态。)
答案 3 :(得分:0)
对于 vterm,这对我有用:
(add-hook 'vterm-mode-hook 'evil-emacs-state)