我知道这个问题上有多个帖子,但是我试过让Vim的这个简单部分工作无济于事。我想让病原体插件与Vim一起使用。作为几点,我正在研究Windows系统。我已经通过github下载了病原体并创建了目录.vim
和子目录autoload
和bundle
。我的.vimrc
是使用mkvimrc
创建的默认设置:
call pathogen#infect()
syntax on
filetype plugin indent on
添加到底部。解决我看过的其他帖子:
:set cp? = nocompatible
我猜的一个方面是问题的一部分是在我运行:scriptnames
之后我没有得到.vim
目录。我只获取Vim\.vimrc
和vim73
目录。我该如何解决这个问题?如果这对其他人来说很明显,我已经在这很长一段时间并且道歉。
答案 0 :(得分:9)
在Windows上,本地用户配置的默认位置为$HOME/vimfiles
。如果您的文件位于$HOME/.vim
,那么您需要将它们移至vimfiles
或将.vim
添加到.vimrc中的运行时路径中:
set runtimepath+=~/.vim
此外,如果Pathogen位于bundle
的子目录中,您需要从那里明确地运行它,因为默认情况下Vim只会查看~/.vim/
。在.vimrc
来电之前将其放入pathogen#infect
:
runtime bundle/pathogen/autoload/pathogen.vim
答案 1 :(得分:1)
我的解决方案是重新下载pathogen.vim
,因为它无法通过重定向无法下载。在tpope的github上指定的网址包含以下步骤:
mkdir -p ~/.vim/autoload ~/.vim/bundle && \
curl -LSso ~/.vim/autoload/pathogen.vim https://tpo.pe/pathogen.vim
您将知道重定向无法下载,因为pathogen.vim
的内容将是302重定向页面。只需从重定向中包含的URL下载,例如:
wget -N -O ~/.vim/autoload/pathogen.vim https://raw.githubusercontent.com/tpope/vim-pathogen/master/autoload/pathogen.vim
答案 2 :(得分:0)
使用已停用的插件打开Vim并输入:set rtp
- 请注意:
~/.vim
,最后一个是~/.vim/after
; ~/vimfiles
,最后一个是~/vimfiles/after
。这是一种Vim惯例。 after
目录用于强制覆盖Vim的默认设置或插件设置,这有时很重要。这就是为什么它们是rtp
中的最后一个。
病原体实际上会解析当前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
和~/.vim/after
或~/vimfiles
和~/vimfiles/after
,甚至~/stuff
和~/stuff/after
(不是确定最后一个案例虽然)作为锚点以正确的顺序注入插件的路径。
如果缺少这对中的任何目录,那么你将对病原体有一些讨厌的经历(就像我之前做过的那样,直到我发现所有上述内容并通过病原体源代码略读) - 因为路径将无法通过正确注射。
现在您可以看到Prince Goulash
提供的答案完全错误:
~/.vim
附加到rtp
他应该先做它; ~/.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
的相对位置。