2013年3月15日 星期五

使用 GitHub 管理 VIM

之前我並沒有在 VIM 裡安裝任何插件 (Plugin),最近開始嘗試使用 VIM 的各種插件,爬文後發現用 GitHub 來管理 VIM 的設定和插件是一件很方便的事。而且,VIM 的配置都放在 $HOME/.vim 這個目錄內,所以也只要同步這個目錄就可以了。

之前在 "使用 pathogen 管理 VIM 的插件 (plugin)" 這篇文章裡,我已經使用 pathogen 來管理 VIM 插件了,使用 pathogen 的好處是只要將插件放到 ~/.vim/bundle 目錄內就行。另外,目前多數的 VIM 插件都集中到 Vim Scripts 這裡,所以只要簡單地搭配 Git Submodule 就可以簡化下載插件的動作。爬了爬文後,似乎很多人都是從 Tsung-Hsiang (Sean) Chang 維護的 vgod's vimrc 開始。vgod's vimrc 確實是一個很棒的範例,所以我也試著研究這個並自己來建立一個屬於自己的 vimrc。

以下這幾篇文章就是使用 pathogen 搭配 Git Submodule 的用法。基本上,Git Submodule 就是將別人的 Repository 當成自己的一部份,所以若來源是 VIM 的插件時,就相當於將 VIM 插件安裝到自己的環境裡。

  1. vgod's vimrc
  2. 使用 Git Submodule 和 Vim-pathogen 管理、同步 Vim 插件及配置
  3. 寶尼: Vim Plugin:GitHub 與 Submodule 共舞

如果將 $HOME/.vim 這個目錄變成一個 Repository,那麼使用 pathogen 搭配 Git Submodule 就很簡單了。只要在 $HOME/.vim 這個目錄內執行這個指令就可以安裝插件了:

$ git submodule add [GIT-REPOSITORY-URL] bundle/[PLUGIN-NAME] 

例如,要安裝 EditPlus 這個插件,而它的來源在 https://github.com/vim-scripts/EditPlus.git,那麼只要執行這一個指令就可以了:

$ git submodule add https://github.com/vim-scripts/EditPlus.git bundle/EditPlus

另外,也可以使用 Vundle 來管理插件。Vundle 的邏輯很有意思,在 Vim Scripts 選好插件後,在 $HOME/.vimrc 裡寫上這麼一行 Bundle [PLUGIN-NAME] ,然後在 VIM 裡執行 :BundleInstall 就搞定安裝的步驟了。下面的文章都有說明怎麼使用 Vundle,也可以直接參考 Vundle 開發者的說明

  1. Git时代的VIM不完全使用教程
  2. 使用github管理VIM

Vundle 的安裝也很簡單,先將 Vundle 下載到 $HOME/.vim/bundle/vundle 目錄:

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

然後在 $HOME/.vimrc 裡加上這段:

set nocompatible       " be iMproved
filetype off          " required!

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

" let Vundle manage Vundle
" required! 
Bundle 'gmarik/vundle'

" My Bundles here:
"
" original repos on github
Bundle 'tpope/vim-fugitive'
Bundle 'Lokaltog/vim-easymotion'
Bundle 'rstacruz/sparkup', {'rtp': 'vim/'}
Bundle 'tpope/vim-rails.git'
" vim-scripts repos
Bundle 'L9'
Bundle 'FuzzyFinder'
" non github repos
Bundle 'git://git.wincent.com/command-t.git'
" ...

filetype plugin indent on     " required!
"
" Brief help
" :BundleList          - list configured bundles
" :BundleInstall(!)    - install(update) bundles
" :BundleSearch(!) foo - search(or refresh cache first) for foo
" :BundleClean(!)      - confirm(or auto-approve) removal of unused bundles
"
" see :h vundle for more details or wiki for FAQ
" NOTE: comments after Bundle command are not allowed..

其中以 Bundle 開頭的就是要安裝的插件。

所以整理了一下,我決定也試試用 GitHub 來管理我的 VIM,首先在 GitHub 上建立一個名稱為 vimrc 的專案。

接著,在 $HOME/.vim 建立我的 Repository,

$ git init
$ git submodule add git://github.com/tpope/vim-pathogen.git bundle/vim-pathogen
$ git submodule add git://github.com/gmarik/vundle.git bundle/vundle

然後再參考 https://github.com/tpope/vim-pathogenhttps://github.com/gmarik/vundle 的說明,建立 $HOME/.vim/vimrc 這個檔案,然後加入:

runtime bundle/vim-pathogen/autoload/pathogen.vim
call pathogen#infect()

set nocompatible
filetype off
set rtp+=~/.vim/bundle/vundle/
call vundle#rc()
" let Vundle manage Vundle
Bundle 'gmarik/vundle'
" My Bundles here:
" vim-scripts repos, vim-scripts.org
Bundle 'SrcExpl'
Bundle 'Trinity'
Bundle 'taglist.vim'
Bundle 'The-NERD-tree'
filetype plugin indent on

接著,將 $HOME/.vim 的內容上傳到 GitHub 去,就搞定了。

$ git add .
$ git commit -m "first commit"
$ git remote add origin https://github.com/yuanfarn/vimrc.git
$ git push -u origin master

往後,在別台 Linux 的電腦上要取用這個 VIM 的設定時,只要依照 https://github.com/yuanfarn/vimrc/blob/master/README.md 的步驟說明下載就可以了。

延伸閱讀

  1. vgod's vimrc
  2. 使用 Git Submodule 和 Vim-pathogen 管理、同步 Vim 插件及配置
  3. 寶尼: Vim Plugin:GitHub 與 Submodule 共舞
  4. Git时代的VIM不完全使用教程
  5. 使用github管理VIM
  6. Windows下安装Vim插件管理Vundle
  7. Git Submodule 的認識與正確使用!

張貼留言