使用 git 和 pathogen 来管理 vim 插件
使用 git 和 pathogen 来管理你的 vim 插件,无论是在跨机器同步还是记录你的 vim 配置都是一个不错的方案。该方案配置十分简单,大致可以分为以下四个步骤:
- 初始化 vim git repo。
- 安装 pathogen 管理 vim 插件。
- 更新插件。
- 在其它机器上同步配置。
1. 初始化 git repo
将默认的 vim 配置放在一个目录中用 git 来管理。vim 默认是使用 home 目录下 ~/.vimrc
文件和 .vim
目录(可以还有 .gvimrc
文件)来读取你的个人配置。现在我们把这些文件全部都放在同一个目录,并且初始化在 git repo 用 git 来管理。
# 将配置文件放在同一个目录中。
cd ~
mv .vimrc ~/.vim/vimrc
mv .gvimrc ~/.vim/gvimrc # 如果用 .gvimrc 的话。
# 创建配置文件软链
ln -s ~/.vim/vimrc ~/.vimrc
ln -s ~/.vim/gvimrc ~/.gvimrc
# 将 `~/.vim` 目录初始化成 git repo.
cd ~/.vim
git init
# 提交配置。
git add .
git commit -m 'Initial Commit'
# 将配置推送到 github 上。
2. 管理 vim 插件
vim 插件默认的安装方式是将插件的脚本文件拷贝到相应的 .vim
子目录中。例如如果你想安装 vim-fugitive, 你需要将该插件的 doc 文件 和 脚本文件 分别拷贝到 ~/.vim/doc
和 ~/.vim/plugin
目录中。
这样拷贝安装的步骤还是很麻烦的,特别是当插件更新了,你更新的插件的时候还是需要重新拷贝一遍。既然vim 的插件是 git 来管理的,那么我们为什么不也用 git 来管理 vim 插件的安装那?
pathogen 插件可以让我们将 vim 插件当作 bundle 来安装, 而不是像默认的复制目录文件的方式来管理,当 vim 插件更新时也更方便。
安装 pathogen.
mkdir -p ~/.vim/autoload ~/.vim/bundle && \
curl -LSso ~/.vim/autoload/pathogen.vim https://tpo.pe/pathogen.vim
开启 pathogen
将下面的代码放在 .vimrc
的文件类型检测(filetype detection)的前面,推荐放在文件的开始。
call pathogen#infect()
call pathogen#helptags()
安装其它 vim 插件
开启了 pathogen 之后我们可以将其它 vim 插件通过 git 子模块的方式来安装。以 fugitive
为例。
cd ~/.vim/bundle
git submodule add http://github.com/tpope/vim-fugitive.git bundle/fugitive
git add .
git commit -m "Install Fugitive.vim bundle as a submodule."
删除 vim 插件
删除 vim 插件的方法,即是删除 git submodule
的方法。如下:
0. mv a/submodule a/submodule_tmp
1. git submodule deinit -f -- a/submodule
2. rm -rf .git/modules/a/submodule
3. git rm -f a/submodule
# Note: a/submodule (no trailing slash)
# or, if you want to leave it in your working tree and have done step 0
3. git rm --cached a/submodule
3bis mv a/submodule_tmp a/submodule
其它插件的安装方法类似。
3. 更新插件
当某个插件更新了之后,我们只需要到插件的目录用 git 更新下即可。如更新 fugitive
:
cd ~/.vim/bundle/fugitive
git pull origin master
如果想一次性更新所有插件,可以使用下面的命令。
cd ~/.vim
git submodule foreach git pull origin master
4. 在其它机器上同步
使 git 来管理并且同步了 github 上,就可以在其它机器上同步使用你的 vim 配置。可以使用下面命令来同步:
cd ~
git clone http://github.com/username/dotvim.git ~/.vim
ln -s ~/.vim/vimrc ~/.vimrc
ln -s ~/.vim/gvimrc ~/.gvimrc
cd ~/.vim
# 初始化 submodule
git submodule update --init --recursive
# 如果的插件需要单独配置,就自行配置如 YouCompleteMe 在安装完成后,还需要执行下面的命令
bundle/YouCompleteMe/install.py --go-completer --js-completer --clang-completer
注意:vim 8 已经支持类似 pathogen 的原生插件管理方法, 所以你也可以不用 pathogen 🙃😁。