2012-12-17 30 views
6

我知道在这个问题上有多个帖子,但我尝试过无法让Vim的这个简单部分工作。我想要让病毒插件与Vim一起工作。作为几点,我正在使用Windows系统。我通过github下载了病原体,并创建了目录.vim和子目录autoloadbundle。我.vimrcmkvimrc创建了默认:病毒无法在Vim中工作

call pathogen#infect() 
syntax on 
filetype plugin indent on 

加入到了谷底。解决其他帖子我看到:

我猜
:set cp? = nocompatible 

的一个领域是问题的一部分,是我跑:scriptnames后,我没有得到.vim目录。我只获得Vim\.vimrcvim73目录。我如何解决这个问题?如果这件事对这里的其他人显而易见,我已经很长时间了,并且表示歉意。

+0

顺便说一句,你的':set'语法是错误的。在'='周围不应有空格,并放下'?';它用于显示当前值。 –

回答

9

在Windows上,本地用户配置的默认位置是$HOME/vimfiles。如果你的文件在$HOME/.vim那么您可能需要将其移动到vimfiles或在.vimrc添加.vim您runtimepath:

set runtimepath+=~/.vim 

而且,如果病原体在bundle子目录,你需要明确地运行它从那里,因为默认Vim只会在~/.vim/。在pathogen#infect调用之前把这个在您的.vimrc

runtime bundle/pathogen/autoload/pathogen.vim 
+1

就是这样,我将.vim目录移到了vimfiles中,似乎都在工作。谢谢,这已经让我疯狂了。 – Liam

+0

没问题。在不同平台之间移动文件时,这经常令我感到困惑。我希望Vim的默认值是一致的! –

0

开放的Vim 禁用插件并键入:set rtp - 注意:

  • ,如果你的系统是Unix,则默认为:第一去~/.vim,最后去~/.vim/after;
  • 如果你在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 

通知病原体如何注入路径。它已经检测到几个插件有after目录,并且在~/.vim/after之前放置它们 - 所以最后一个字永远是我的。

为了实现这种病原体需要一双要么~/.vim~/.vim/after~/vimfiles~/vimfiles/after甚至~/stuff~/stuff/after的(不知道,虽然最后的情况下)作为锚注入正确的顺序插件的路径。

如果这对中的任何一个目录丢失,那么你会对病原体有一些令人讨厌的经历(就像我之前做的一样,直到我发现所有上述的东西,并通过病原体源代码剔除) - 因为路径不会能够正确注入。

现在你可以看到,Prince Goulash提供的答案是完全错误的

  1. 的第一个错误是,他已经追加到~/.vimrtp他 应该预先考虑它;
  2. 第二个错误是他没有追加~/.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

1

我的解决方案是重新下载pathogen.vim,因为它以某种方式未能遵循重定向未能下载。在tpope的github指定的URL具有以下步骤:

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