在Emacs中禁用导航的邪恶模式?或者任何只读缓冲区?

时间:2014-05-22 04:48:09

标签: emacs evil-mode

我试图在Emacs中找到像Nerd Tree这样的东西,并找到了Nav,就像基本的emacs文件导航器一样,它适合我。

问题是,当我打开Nav并切换到其缓冲区时,邪恶模式仍然打开,如果我想使用任何导航特定命令(例如C-z),我必须按. nav-toggle-hidden-files)。它让我很烦恼。

我试图通过粘贴来解决这个问题已经过了几个小时

(require 'evil)
    (evil-mode 0)

Nav文件中的任何地方,但显然我做错了.. 而且我很确定在使用其他插件时它会再次发生.. 我该怎么做?

3 个答案:

答案 0 :(得分:10)

正如邪恶的维基here所述,你可能想要查看邪恶的初始状态。

这是我的emacs配置的相关部分:

(evil-set-initial-state 'ibuffer-mode 'normal)
(evil-set-initial-state 'bookmark-bmenu-mode 'normal)
(evil-set-initial-state 'dired-mode 'emacs)
(evil-set-initial-state 'sunrise-mode 'emacs)

不能减轻这样一个事实:我确实希望有一天能在这些模式中使用vim键绑定...

答案 1 :(得分:8)

您希望{E_c}缓冲区在Emacs状态下打开,而不是在Evil的正常状态下打开。我不知道实际调用nav-mode是什么,但请执行以下操作,相应地调整模式名称:

nav-mode

答案 2 :(得分:4)

你需要的是" hook",这将告诉Emacs您希望特定模式在哪些条件下处于活动状态。

我没有使用evilnav模式,但您希望.emacs中的以下某行类似

(add-hook 'nav-mode-hook 'disable-evil-mode)

此命令告诉Emacs当模式(其挂钩在nav-mode-hook中列出)处于活动状态时,运行函数disable-evil-mode。您可能必须根据nav-modeevil-mode的实现方式修改挂钩列表名称或回调函数名称。

nav-mode-hook是我对nav-mode将其挂钩列表调用的猜测。如果它不起作用,请检查nav-mode文档,查找如何添加挂钩。

disable-evil-mode是你调用禁用邪恶模式的任何函数。检查恶意模式文档以获取实际的函数名称。