如何在没有 ~/.vimrc 的情况下启用插件管理器

How to enable a plugin manager without ~/.vimrc

在使用 vim 一段时间后,我的 ~/.vim/ 从我第一次使用 vim 开始的实验随着时间的推移变得非常混乱。所以我想,是时候整理并开始使用具有干净配置的插件管理器了。

由于我在多台机器上共享我的配置,我通常使用 git 存储库管理我的 ~/.vim/ 路径。为了避免大.vimrc,我把自己的配置放在~/.vim/plugin/下。这允许我将所有共享配置保留在此文件夹中,并仅将 ~/.vimrc 用于机器相关配置。

从 NeoBundle 上的 VAM 开始,现在是 Vundle,我总是遇到同样的问题。如果我在 ~/.vim/plugin/pluginmanager.vim 而不是 ~/.vimrc 下添加所需的配置,则安装的插件不会加载或仅部分加载。命令 :echo &rtp 列出了正确的包,但 :scriptnames 不包括已安装的插件。如果我执行 mv ~/.vim/plugin/pluginmanager.vim ~/.vimrc 一切都按预期工作。

谁能解释这种行为并提供解决方案?

我的 pluginmanager.vim 看起来像这样:

set nocompatible              " be iMproved, required
filetype off                  " required

" set the runtime path to include Vundle and initialize
set rtp+=~/.vim/bundle/Vundle.vim
call vundle#begin()

" let Vundle manage Vundle, required
Plugin 'gmarik/Vundle.vim'
Plugin 'bling/vim-airline'
Plugin 'MarcWeber/vim-addon-mw-utils'
Plugin 'tomtom/tlib_vim'
Plugin 'garbas/vim-snipmate'
Plugin 'honza/vim-snippets'

" All of your Plugins must be added before the following line
call vundle#end()            " required
filetype plugin indent on    " required

我的 vim 安装版本是 7.4.52

我建议使用 ~/.vimrc 文件进行一般配置,并使用另一个文件,例如 ~/.vimrc.local 与您的机器特定配置。您可以通过将以下内容添加到 ~/.vimrc.

来获取 ~/.vimrc.local
if filereadable(glob("~/.vimrc.local")) 
    source ~/.vimrc.local
endif

来源:http://blog.sanctum.geek.nz/local-vimrc-files/


要解决您的问题,请尝试将 runtime! bundle/**/*.vim 添加到 pluginmanager.vim 文件的末尾。

另请参阅::help init

问题出在启动顺序上。在你的 ~/.vimrc 被执行后(作为启动期间的第一件事),Vim 执行类似 :runtime! plugin/*.vim 的东西来加载插件。由于您的插件管理器随后才被调用,'runtimepath' 中的更改不会再到达触发 :runtime 命令的地方,并且插件无法加载。

有很多解决方法:

  • 将您的脚本移动到 ~/.vim/pluginmanager.vim 并明确地 :runtime pluginmanager.vim 它来自您的 ~/.vimrc.~/.vimrc.
  • 的(每个副本)
  • 通过:runtime! plugin/*.vim重新触发。

但我同意@brettanomyces 的观点,即最好的解决方案是按预期使用 ~/.vimrc,并将系统特定的配置放入不同的脚本中。