6

我知道关于这个问题有多个帖子,但我试图让 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\.vimrcandvim73目录。我该如何解决这个问题?如果这对这里的其他人来说很明显,我已经在这里很长时间了,并道歉。

4

3 回答 3

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
于 2012-12-17T21:12:37.673 回答
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
于 2014-07-07T16:35:46.710 回答
0

打开带有禁用插件的 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- 所以最后一个词总是我的。

为了实现这种病原体,需要一对~/.vimand ~/.vim/afteror or ~/vimfilesand ~/vimfiles/afteror even ~/stuffand ~/stuff/after(虽然不确定最后一种情况)作为锚点,以正确的顺序注入插件的路径。

如果缺少这对中的任何目录,那么您将对病原体有一些令人讨厌的经历(就像我前一段时间所做的那样,直到我发现了所有上述内容并浏览了病原体源代码) - 因为路径将无法被注入正确。

现在您可以看到由提供的答案Prince Goulash是完全错误的:

  1. 第一个错误是他已经附加~/.vim了,rtp而他应该在前面加上它;
  2. 第二个错误是他没有 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.

于 2012-12-18T22:12:48.143 回答