【问题标题】:Pathogen and Neocomplete, Supertab, Youcompleteme; how to enable disable bundles?病原体和 Neocomplete,Supertab,Youcompleteme;如何启用禁用捆绑包?
【发布时间】:2014-10-26 10:41:38
【问题描述】:

我使用 Pathogen 在启动时加载我的插件。

有时我使用Neocomplete 插件,有时使用YouCompleteMe 插件,有时使用Supertab 来完成单词,有时我根本不使用完成器。
如果这些插件都加载到 Pathogen 中,它们就不能一起工作。

这就是为什么我决定在 vimrc 的末尾创建一个小菜单的原因,我可以在其中选择要使用的完成程序(我要使用的完成程序是我在病原体中禁用的完成程序)。我可以用快捷键启动它。
列表 g:PATHO 包含要在病原体中禁用的插件:
如果我选择使用 Supertab --> 从 g:PATHO 中删除 Supertab,保存 g:PATHO 并重新加载 vimrc。
如果我选择使用 Neocomplete --> 从 g:PATHO 中删除 Neocomplete,保存 g:PATHO 并重新加载 vimrc。
如果我选择使用 Youcompleteme --> 从 g:PATHO 中删除 Youcompleteme,保存 g:PATHO 并重新加载 vimrc。

这是我的 _vimrc 开头的内容

  if !exists("g:PATHO")
    let g:PATHO = ['YouCompleteMe','neocomplete.vim','supertab']
  endif
  let g:pathogen_disabled = g:PATHO

在我的 _vimrc 下面我有这个命令可以将全局变量保存在我的 viminfo 文件中:

set viminfo+=!  

(感谢 Ingo Karkat)

g:PATHO 是用 viminfo 写的,但是当我重新加载 vimrc 时,找不到变量 g:PATHO,因为在 _vimrc 的开头还没有读取 viminfo。
viminfo 什么时候在 _vimrc 中读取? 如何让病原体在 vimrc 启动时读取 g:PATHO?
(希望我说清楚了)

【问题讨论】:

    标签: vim plugins


    【解决方案1】:

    你读过:help startup吗?

    1. 您的viminfo 文件在初始化过程的后期非常被读取,在您的vimrc 和您的所有插件都已获取源,因此病原体不会'无法将您硬编码在vimrc 中的默认g:PATHO 与viminfo 中的viminfo 进行比较。

    2. 您的viminfo 文件在初始化过程的后期只被读取一次,并且在会话的生命周期内永远不会被重新读取。重新加载您的 vimrc 将永远不会触发重新读取,并且病原体或任何其他插件都不会注意到您希望保留的更改。

      您可以尝试 :rviminfo 手动重新读取该文件并在 VimEnter 或其他事件上自动执行命令,但是......

    3. ...在会话期间修改 g:pathogen_disabled 变量不会产生您想要的效果:它不会从您的 runtimepath 中删除插件,也不会“取消源”它。您可以使用该选项的不同值重新加载您想要的所有vimrc,结果将始终相同:什么都没有。

    你需要的——除了为这样一个奇怪的想法提出令人信服的理由之外,甚至为你的配置中有三个该死的补全插件这一事实——找到一种方法来有效地制作函数和变量以及其他任何东西一个特定的插件完全从 Vim 的记忆中消失了。而且我相信你不会在这里找到它。


    附带说明,三个插件中只有一个提供built-in commands to enable/disable it。 那是一个明智的设计选择,如果它更普遍可用,将使插件囤积者的生活变得更加轻松。

    【讨论】:

    • 谢谢,我使用 youcompleteme 因为它可能是最好的,但有时我只想在手动完成模式下使用完成器。你不能用 youcompleteme 做到这一点。它不断弹出。 Neocomplete 具有手动完成模式(tab 键)。我将 supertab 用于 p.e。拼写检查完成(但不适用于缓冲区完成,supertab 没有模糊搜索)。这三个插件你知道吗?
    • YCM 手动完成。是的,我认识它们,我不使用它们或任何其他替代方法。
    • 过去有一些关于手动完成的讨论,但我还没有看到有人使用手动完成的 YCM。你自己试过吗?我曾经读过 Valloric 不想让 YCM 适应手动完成。
    • 这不是为了调用手动完成来禁用 YCM,除了分段触发器。也可以在这里查看:github.com/christoomey/dotfiles/issues/79我测试了它,但它没有手动触发。
    • 顺便说一句,谢谢您的回答。有 i.m.o.只剩下一种可能性,直接写入 vimrc 文件并重新启动 vim。 :)
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2015-08-18
    • 2014-07-05
    • 1970-01-01
    • 2014-10-24
    • 2014-05-02
    • 1970-01-01
    相关资源
    最近更新 更多