Vim:对不同版本的 vim 使用不同的 ~/.vim/plugin/ 目录?

Vim:对不同版本的 vim 使用不同的 ~/.vim/plugin/ 目录?

与你们许多人一样,我的自定义 Vim 配置存储在我的 中~/.vimrc,插件、颜色等存储在~/.vim/plugins~/.vim/colors等下。

我想在多台服务器之间共享一个 Vim 配置。其中一些服务器运行 Vim 7,一些运行较旧的 Vim 6。大多数 Vim 插件适用于 Vim 7,但对于使用较旧系统的用户,旧版本仍然存在。请参阅目录差异举个例子。

如果我的系统运行的是 Vim 6,我该如何配置 Vim 以仅使用与 Vim 6 兼容的插件?

我正在考虑将旧的插件存储在类似的子目录中~/.vim/plugins6/,并将 Vim 插件保留在中~/.vim/plugins,但是我该如何告诉 Vim6 忽略~/.vim/plugins并使用~/.vim/plugins6呢?

答案1

在您的 .vimrc 中,您必须检查 vim 版本,并相应地更新您的 &runttimepath。

编辑:

我的错误。Vim 目录结构是硬编码的。相反,你应该有一个~/.vim6目录,其中包含指向除 和 之外的所有目录的符号链接,´/.vim并且你应该在 .vimrc 中添加以下内容:plugin/after/plugin

if version < 700
   let &rtp=substitute(&rtp, '\.vim', '&6', 'g')
endif

答案2

我会尝试这样做:

HOME=<customdir1> <vim binary version1>

HOME=<customdir2> <vim binary version2>

是这里的环境变量。为了方便起见,您可以将这些调用包装到 shell 脚本中。

这种通用方法通常很有效。

答案3

您可以让 vimrc 检查 vim 版本,然后从特定文件夹中获取所有插件。

if &loadplugins
  if v:version >= 700
    runtime! plugin7/*.vim
    runtime! plugin7/**/*.vim
  elseif v:version >= 600
    runtime! plugin6/*.vim
    runtime! plugin6/**/*.vim
  endif
endif

相关内容