打开带有禁用插件的 Vim并键入:set rtp
- 请注意:
- 如果你在 Unix 上,那么默认情况下:第一个去
~/.vim
,最后一个去~/.vim/after
;
- 如果你在 Windows 上,那么默认情况下:第一个去
~/vimfiles
,最后一个去~/vimfiles/after
。
这是一种 Vim 约定。after
目录用于强制覆盖 Vim 的默认值或插件的设置,这有时很重要。这就是为什么他们是最后一个rtp
。
Pathogen 实际上会解析您当前rtp
变量的结构,并使用它来正确地注入插件的路径rtp
。例如,看看我的rtp
:
runtimepath=
~/.vim,
~\.vim\plugins\NERDCommenter,
~\.vim\plugins\NERDTree,
~\.vim\plugins\SameSyntaxMotion,
~\.vim\plugins\Tabular,
~\.vim\plugins\UltiSnips,
~\.vim\plugins\c.vim,
~\.vim\plugins\clang_complete,
~\.vim\plugins\CountJump,
~\.vim\plugins\delimitMate,
~\.vim\plugins\fswitch,
~\.vim\plugins\matchit,
~\.vim\plugins\matlab,
~\.vim\plugins\neocomplcache,
~\.vim\plugins\protodef,
~\.vim\plugins\python-syntax,
~\.vim\plugins\solarized,
~\.vim\plugins\syntastic,
~\.vim\plugins\vim-creole,
~\.vim\plugins\vim-latex,
~\.vim\plugins\vim-markdown,
~\.vim\plugins\vim-python-pep8-indent,
~/vimfiles,
D:\Applications\Vim/vimfiles,
D:\Applications\Vim,
D:\Applications\Vim/vimfiles/after,
~/vimfiles/after,
~\.vim\plugins\Tabular\after,
~\.vim\plugins\UltiSnips\after,
~\.vim\plugins\vim-markdown\after,
~/.vim/after
注意病原体如何注入路径。它检测到几个插件有after
目录并将它们放在前面~/.vim/after
- 所以最后一个词总是我的。
为了实现这种病原体,需要一对~/.vim
and ~/.vim/after
or or ~/vimfiles
and ~/vimfiles/after
or even ~/stuff
and ~/stuff/after
(虽然不确定最后一种情况)作为锚点,以正确的顺序注入插件的路径。
如果缺少这对中的任何目录,那么您将对病原体有一些令人讨厌的经历(就像我前一段时间所做的那样,直到我发现了所有上述内容并浏览了病原体源代码) - 因为路径将无法被注入正确。
现在您可以看到由提供的答案Prince Goulash
是完全错误的:
- 第一个错误是他已经附加
~/.vim
了,rtp
而他应该在前面加上它;
- 第二个错误是他没有 append
~/.vim/after
。
正确的解决方案如下所示。如果您必须在包括 Windows 在内的不同平台上工作,您应该将其添加到您的.vimrc
(我也将其保存在我的 - 您可以从我的rtp
示例中推断出来):
if has('win32') || has('win64')
set runtimepath^=~/.vim
set runtimepath+=~/.vim/after
endif
此代码段将确保跨平台的一致性。现在,即使在 Windows 中,您也可以使用类 Unix 目录.vim
,而忘掉那些vimfiles
垃圾 - IMO 丑陋而可怕。
之后你打电话:
call pathogen#infect('plugins') " or wherever your plugins reside
call pathogen#helptags() " optional, but really cool
注意: 'plugins'
表示~/.vim/plugins
目录,所以它是~/.vim
.