无法让病原体在Vim中工作

无法让病原体在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的这个简单部分工作,但没有任何效果。我想让病原体插件与Vim一起工作。有几点,我正在使用Windows系统。我已经通过github下载了病原体,并创建了目录
.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
这是一种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
注意病原体是如何注入路径的。它检测到有几个插件在
目录之后有
,并将它们放在
~/.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