使用Vundle + Github实现Vim配置云管理

最近Xcode的脑残编辑功能已经彻底让我忍不了了。所以我决定重拾Vim,并且把Vim作为今后主要的C++开发工具。

关于Vim的使用,最近也在写一篇详尽记录Vim使用经验与技巧的文章。只是这个坑实在太大,这几天折腾Vim导致我自己的开发进度也拖了很多,这个坑还是得慢慢填。

不过最近思如泉涌,而且已经把Vundle折腾好了,所以决定还是先写一篇关于Vundle的技巧,作为后面大坑的前戏吧。

关于Vundle


这是Vundle的主页

Vundle是现在使用Vim必备的一个插件管理插件,他可以自动更新、下载、管理所有的Vim插件。有了Vundle,只需要把常用插件写在.vimrc文件中,其他的事情都不用管了。不管是下载还是更新还是删除,只需要执行一个命令,就可以自动搞定,省心又省力,懒人与强迫症的最爱。

正是由于Vundle的出现大大简化了插件配置的过程,加上程序员们最爱的Github,双剑合璧,就能完成一项Vimer梦寐以求的功能:不管在哪里使用电脑,都能迅速的将自己的最常用Vim配置复制过去,立刻让自己在最熟悉的环境下工作。

Vundle的安装与配置


安装

直接使用git将Vundle下载到本地(需要先安装git,Mac系统自带)

$ git clone https://github.com/gmarik/vundle.git ~/.vim/bundle/vundle

启用

打开~/.vimrc文件,添加如下代码:

set rtp+=~/.vim/bundle/vundle/ 
call vundle#rc()
Bundle 'gmarik/vundle' 

插件的配置(安装其他插件)

使用Vundle安装其他插件非常容易,只需要在.vimrc文件中加入诸如 Bundle 'plugin name' 的代码,然后运行 :Bundle Install 更新即可。

注意,Vundle会自动从Vim ScriptsGithub两个网站进行下载。如插件存在Vim Scripts上,配置时直接填写插件名即可,如存在Github上,需要在前面加上repository的名字。如 'repository name/plugin name'

例如,我的配置的插件列表,只需要加入如下代码即可:

Bundle 'The-NERD-tree'                 "目录树显示插件
Bundle 'The-NERD-Commenter'         "快速注释插件
Bundle 'ctrlp.vim'                     "文件查找插件
Bundle 'AutoClose'                     "自动添加匹配的右括号
Bundle 'Valloric/YouCompleteMe'     "目前最好用的自动补全插件
Bundle 'honza/vim-snippets'            "代码片段自动生成插件
Bundle 'Lokaltog/vim-easymotion'    "快速跳转/查找字符插件

常用命令

:BundleInstall
:BundleInstall!
:BundleClean
:BundleClean!
:BundleUpdate

以上命令的意思都很容易理解,主要用于修改配置文件后的安装与清理。

Vundle + Github 打造自己的云Vim


题文已经说了,我们的最终目的是辛苦配置一番之后,在今后使用时,能够快速同步与部署我们的配置,不用再一遍遍的在不同的机器上配置。

至繁到至简,我想这也是所有Geek一直追求的目的,看似折腾,实际上却是为了将来的方便与简单,懒人改变世界,哈哈。

下面就一步步来说明如何完成Vundle + Github的云同步。

在自己的github上创建相关repository

这一步不过多赘述了,用过github的人都会。不明白的同学可以看我写的在Mac上使用git与Github

配置本地的Vim

我们希望将所有的配置文件在一层目录管理起来,而由于默认的 ~/.vimrc 文件在用户根目录下,不方便用git管理。所以我们想办法使用软连接巧妙地将 ~/.vimrc 移动到 ~/.vim/目录下。

cd ~/.vim
touch vimrc                        #建立vimrc文件保存vim配置文件,在 vimrc文件下编辑自己的配置
ln -s ~/.vim/vimrc ~/.vimrc        #通过软连接将 ~/.vim/ 目录下vimrc文件映射到 ~/.vimrc

由于Vundle已经可以自动下载插件了,所以我们没必要再把本地的插件目录放到github了。所以编写 .gitignor 文件禁止上传 /bundle目录。 $ touch ~/.vim/.gitignore

.gitignor 文件的内容如下:

bundle/*
.DS_Store
*/.DS_Store
*.bak
*.bk

将本地配置上传至Github

这一步对于用过Github的人来说也很简单了,直接贴命令。

$ cd ~/.vim

$ git add .

$ git commit -m"Initial commit"

$ git remote add remoteName git@github.com:your-github-id/your-repository-id.git

$ git pull remoteName master

$ git push remoteName master

编写脚本,实现完全自动化

完成了上一步之后,实际我们已经完成了通过github来云同步我们配置的目的。但是还不够傻瓜化,我们再写一个shell脚本实现最简单化好啦。 $ touch ~/.vim/init my vim.sh

下面是脚本内容:

#!/bin/sh
echo "Install vim configurations..."

echo "cd to .vim directory"
cd ~/.vim

echo "backup origin vimrc..."
if [ -f "$HOME/.vimrc" ]; then
    mv ~/.vimrc ~/.vimrc.`date +%Y%m%d`
fi

echo "create new vimrc..."
ln -s ~/.vim/vimrc ~/.vimrc

git submodule init
git submodule update

vi +BundleInstall! +qall

如何使用

好了,我们已经大功告成!
在使用时,只需要两步就能完成我们的自动同步工作。

git clone https://github.com/your-github-id/your-repository-id.git ~/.vim

cd ~/.vim

./init my vim.sh

本文由金同尧原创,首发于JinTongYao’s blog,转载请注明出处。