在Emacs中禁用Nav的evil-mode?或者任何只读缓冲区?

16

我试图在Emacs中找到类似于Nerd Tree的东西,并发现了Nav,它就像是基本的emacs文件导航器,非常适合我。

问题在于,当我打开Nav并切换到它的缓冲区时,evil-mode仍然处于开启状态,如果我想使用任何Nav特定命令(例如,.表示nav-toggle-hidden-files),我必须按下C-z。这让我很烦恼。

我已经尝试了几个小时,尝试通过粘贴

(require 'evil)
    (evil-mode 0)

在Nav文件中到处都是它,但显然我做错了...而且我很确定在使用其他插件时也会再次发生这种情况...我该怎么办?


+1 这就是我从 vim 切换到 emacs+evil 的原因之一,适应新的项目目录结构需要时间,直到我能够用 helm/ido 熟练记住它。 - joefromct
3个回答

12

正如在邪恶的维基这里所描述的,您可能想要检查evil-set-initial-state。

这是我的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键绑定的事实...


11
你希望在Emacs中以Emacs状态而不是Evil的正常状态打开nav-mode缓冲区。我不知道实际上nav-mode被称为什么,但请按照以下步骤操作,相应地调整模式名称: (add-to-list 'evil-emacs-state-modes 'nav-mode)

1
很高兴能够帮忙。顺便提一下,可以查看这个主题,了解nav-mode之外的其他选项:http://superuser.com/questions/695256/file-management-in-emacs - Dan
1
不错!我会看一下的,因为当浏览文件时离开evil-mode有点让我烦恼:P 当涉及到我的编辑器时,我是一个公主哈哈。 - Felix D.
这里有一个示例,可以同时为多个模式执行此操作:http://wikemacs.org/index.php/Evil#Enter_an_emacs_mode_in_a_given_state - Ehvince
非常感谢您!我已经寻找了很长时间!我正要建议一堆函数:D - Alberto Zaccagni

7
你需要的是“hook”,它会告诉Emacs你希望在什么条件下激活或禁用特定模式。
我不使用evil或nav模式,但你可能需要将类似以下行添加到你的.emacs文件中:
(add-hook 'nav-mode-hook 'turn-off-evil-mode)

这个命令告诉Emacs,当模式(其钩子列在nav-mode-hook中)处于活动状态时,运行turn-off-evil-mode函数。你可能需要根据nav-modeevil-mode的实现方式修改钩子列表名称或回调函数名称。 nav-mode-hook是我猜测nav-mode将调用其钩子列表的名称。如果不起作用,请查看nav-mode文档,查找如何添加钩子。

谢谢您的信息,它确实帮助我更好地理解了emacs的功能。 - Felix D.
正确的命令是 turn-off-evil-mode - jdhao

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接