我在启动时使用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。
什么时候在_vimrc中读取viminfo?
我怎样才能让病原体在vimrc启动时读取g:PATHO?
(希望我自己说清楚)
答案 0 :(得分:3)
您是否阅读了:help startup
?
您的viminfo
文件在初始化过程后期非常,在 vimrc
之后所有插件都来源,因此,病原体无法将您在g:PATHO
中硬编码的默认vimrc
与viminfo
中的默认viminfo
进行比较。
您的vimrc
文件只在初始化过程的后期读取一次,并且在会话的生命周期内永远不会再次重新读取。重新加载:rviminfo
将永远不会触发重读,并且病原体和任何其他插件都不会注意到您希望持续的更改。
您可以尝试VimEnter
手动重新读取该文件,并在g:pathogen_disabled
或其他一些事件上自动登录,但是......
...在会话期间修改runtimepath
变量将无法获得您想要的效果:它不会从您的vimrc
中删除插件,也不会“取消”它无论是。您可以使用该选项的不同值重新加载{{1}}您想要的所有内容,结果将始终相同:无。
你需要什么 - 除了为这样一个奇怪的想法提出令人信服的理由,或者甚至在你的配置中有三个怪异的完成插件这一事实 - 找到一种方法来有效地制作函数和变量等等。一个特定的插件完全从Vim的记忆中消失了。我相信你不会在这里找到它。
作为旁注,三个插件中只有一个提供built-in commands to enable/disable it。 那是一个明智的设计选择,如果它更普遍可用,将使插件囤积者的生活变得更加容易。