【问题标题】:Disabling evil-mode for Nav in Emacs? Or any read-only buffers?在 Emacs 中禁用 Nav 的邪恶模式?或者任何只读缓冲区?
【发布时间】:2014-07-10 23:18:35
【问题描述】:

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

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

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

(require 'evil)
    (evil-mode 0)

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

【问题讨论】:

  • +1 关于这个问题。这是我从 vim-> emacs+evil 的过渡如此艰难的原因之一……在我用 helm/ido 记住它之前,我刚刚适应了一个新的项目目录结构。

标签: emacs evil-mode


【解决方案1】:

您需要的是“hook”,它会告诉 Emacs 在什么条件下您希望某个特定模式处于活动状态。

我不使用evilnav 模式,但您希望与.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 的功能。
  • 正确的运行命令是turn-off-evil-mode
【解决方案2】:

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

(add-to-list 'evil-emacs-state-modes 'nav-mode)

【讨论】:

  • 很高兴为您提供帮助。顺便说一下,看看这个线程,除了nav-mode之外还有一些其他选项:superuser.com/questions/695256/file-management-in-emacs
  • 不错!我会看一下,因为在浏览文件时离开邪恶模式当然会让我有点烦恼:P 说到我的编辑器,我真是个公主哈哈
  • 这是一个同时为多种模式执行此操作的示例:wikemacs.org/index.php/…
  • 非常感谢您!我找了好久!我正要建议一堆函数:D
【解决方案3】:

如 evil wiki here 中所述,您可能需要查看 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 键绑定的事实......

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2012-01-18
    相关资源
    最近更新 更多