无法让病原体在Vim中工作
我知道有多篇关于这个问题的帖子,但我尝试过让Vim的这个简单部分工作,但没有任何效果。我想让病原体插件与Vim一起工作。有几点,我正在使用Windows系统。我已经通过github下载了病原体,并创建了目录无法让病原体在Vim中工作,vim,plugins,pathogen,Vim,Plugins,Pathogen,我知道有多篇关于这个问题的帖子,但我尝试过让Vim的这个简单部分工作,但没有任何效果。我想让病原体插件与Vim一起工作。有几点,我正在使用Windows系统。我已经通过github下载了病原体,并创建了目录.vim和子目录autoload和bundle。My.vimrc是使用mkvimrc创建的默认值,具有: call pathogen#infect() syntax on filetype plugin indent on 添加到底部。针对我看到的其他帖子: :set cp? = nocom
.vim
和子目录autoload
和bundle
。My.vimrc
是使用mkvimrc
创建的默认值,具有:
call pathogen#infect()
syntax on
filetype plugin indent on
添加到底部。针对我看到的其他帖子:
:set cp? = nocompatible
我猜问题的一个方面是在我运行
之后:scriptnames
我没有得到.vim
目录。我只得到Vim\.vimrc
和vim73
目录。我如何解决这个问题?我已经在这里呆了很长时间了,如果这对这里的其他人来说是显而易见的,我很抱歉。在Windows上,本地用户配置的默认位置是$HOME/vimfiles
。如果文件位于$HOME/.vim
中,则需要将其移动到vimfiles
或将.vim
添加到.vimrc中的运行时路径:
set runtimepath+=~/.vim
此外,如果病原体位于bundle
的子目录中,则需要从那里显式运行它,因为默认情况下,Vim只在~/.Vim/
中查找。在病原体#传染
呼叫之前,将其放入.vimrc
:
runtime bundle/pathogen/autoload/pathogen.vim
在禁用插件的情况下打开Vim,然后键入
:设置rtp
-注意:
- 如果您在Unix上,那么默认情况下:第一个在
之后,最后一个在~/.vim
~/.vim/之后李>
- 如果您在Windows上,则默认情况下:第一个是
,最后一个是~/vimfiles
~/vimfiles/after
- 如果您在Windows上,则默认情况下:第一个是
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
注意病原体是如何注入路径的。它检测到有几个插件在目录之后有,并将它们放在
~/.vim/after之前,这样最后一个字总是我的
为了达到这个目的,病原体需要一对~/.vim
和~/.vim/after
或~/vimfiles
和~/vimfiles/after
甚至~/stuff
和~/stuff/after
作为锚,以正确的顺序注入插件路径
如果这两个目录中的任何目录丢失,那么您将有一些关于病原体的糟糕经历(就像我以前做的那样,直到我发现所有上述内容并浏览了病原体源代码)——因为路径将无法正确注入
现在您可以看到,古拉什王子提供的答案是完全错误的:
第一个错误是他把~/.vim
附加到rtp
中
他应该事先准备好李>
第二个错误是他没有在
之后附加~/.vim/
正确的解决方案如下所示。如果您必须在不同的平台(包括Windows)上工作,您应该将其添加到.vimrc
(我也将其保存在我的rtp
示例中,您可以从中推断出来):
此代码段将确保跨平台的一致性。现在,即使在Windows中,您也可以使用类似Unix的目录.vim
,忘记vimfiles
crap,这在我看来既丑陋又可怕
然后你打电话:
call pathogen#infect('plugins') " or wherever your plugins reside
call pathogen#helptags() " optional, but really cool
注意:
表示~/.vim/plugins
目录,因此它与~/.vim
相对。我的解决方案是重新下载病原体.vim
,因为它没有遵循重定向而无法下载。在tpope上指定的URL具有以下步骤:
mkdir -p ~/.vim/autoload ~/.vim/bundle && \
curl -LSso ~/.vim/autoload/pathogen.vim https://tpo.pe/pathogen.vim
您将知道重定向无法下载,因为病原体的内容。vim
将是一个302重定向页面。只需从重定向中包含的URL下载即可,例如:
wget -N -O ~/.vim/autoload/pathogen.vim https://raw.githubusercontent.com/tpope/vim-pathogen/master/autoload/pathogen.vim
就是这样,我将.vim目录移到了vimfiles中,所有这些似乎都正常工作。谢谢你,这让我快发疯了。没问题。在不同平台之间移动文件时,这常常使我感到困惑。我希望Vim的默认值是一致的!顺便说一句,您的:set
语法错误。=
周围不能有空格,请将?
放下;用于显示当前值。
wget -N -O ~/.vim/autoload/pathogen.vim https://raw.githubusercontent.com/tpope/vim-pathogen/master/autoload/pathogen.vim