使用pathogen管理Vim插件並託管到Github

參照文章【1】【2】的辦法,將vim打形成一個Python開發環境。文章中使用的是 pathogen + git 來管理 Vim 插件的。對這種方式還不太明白的同窗能夠參考【3】中的介紹。pathogen 改變了原先 Vim 只能把插件所有扔到 .vim 目錄下的操做方式,使得各個插件能夠以一個獨立的文件夾存在於 .vim/bundle 目錄中,添加和刪除插件都變的很是清爽。使用 git 強大的子模塊管理功能,能夠實現方便的插件安裝和自動升級。 html

 

1. 準備工做

建立.vim目錄,以及其下的autoloadbundle目錄。(若是先前已有.vim目錄,能夠先備份一下)python

$ mkdir ~/.vim/
$ mkdir ~/.vim/{autoload,bundle}
$ cd ~/.vim/
$ git init

若是Ubuntu中沒有安裝Git,須要首先安裝Git4】。 git

 

2. 安裝pathogen

下載vim-pathogen5】,將zip包中autoload下的pathogen.vim文件copy ~/.vim/autoload文件夾下。 github

而後添加下面的命令到~/.vimrc文件中(.vimrc文件不存在的話,先建立.vimrc文件)。vim

filetype off
call pathogen#runtime_append_all_bundles()
call pathogen#helptags()

當運行pathogen命令的時候文件格式檢測必須關閉,因此把filetype off放到最前面(UPTATED(20141022))。 app

這樣,pathogen插件就安裝好了。ide

UPDATED(20141017)this

(1) 當按照本文設置完成後,使用vim時,會報錯誤:url

 

Error detected while processing /home/maxime/.vim/bundle/tasklist/plugin/tasklist.vim:
line  369:
E227: mapping already exists for \t

 

錯誤緣由是: tasklist will not map to <leader>t if a mapping to <Plug>TaskList is found.So you just need to create a mapping to <Plug>TaskList in your vimrc.spa

解決方法是:在~/.vimrc文件中添加mapping【7】:

nnoremap <leader>v <Plug>TaskList

  (2) 添加完mapping後,使用vim時,仍然會彈出如下命令行:

Change pathogen#runtime_append_all_bundles() to pathogen#infect() 
Press ENTER or type command to continue

緣由:call pathogen#infect() which can be used in the latest version of pathogen now deals with this filetype problem (and is much easier to remember and type than runtime_append_all_bundles)【8】

這是提示你 pathogen#runtime_append_all_bundles() 太老了,如今用 pathogen#infect() 替代它,並且比pathogen#runtime_append_all_bundles() 更容易記,還能少打好多字呢。

因此你須要把上面設定中的 call pathogen#runtime_append_all_bundles()改成 pathogen#infect() 。

UPTATED(20141022)

當在vimrc中設置 設置語法高亮時,發現不起做用,若是將 filetype off 注掉,或者將其提至syntax on以前,語法高亮就會起做用。

因此須要將filetype off 提至vimrc文件的最頂端。

UPDATED(20141024)

(1)關於pathogen爲什麼要關閉filetype detection的緣由,請參見【12】,同時也提供瞭解決辦法,在 filetype off後,爲不影響其餘功能,在設置完pathogen後,再將filetype detection打開。

(2)必須設置 filetype off,是由於Vim's file detection的一個bug,這個bug在 >Vim 7.3.430的版本中已修復了,所以若是vim的版本>Vim 7.3.430,則沒必要設置filetype off【13】。

(3)爲避免沒必要要的麻煩,咱們將pathogen插件設置提早到vimrc的最開始。 

 

3. Git Submodule添加PluginGit Repository

Git Submodule的做用,簡單來講就是能夠將別人的 git 掛入到你目前 git 的任何位置。添加全部的vim plugins做爲咱們當前Repositorysubmodule

關於Git Submodule的詳細教程,參考【6】。

~/.vim目錄下執行如下命令

git submodule add http://github.com/tpope/vim-fugitive.git bundle/vim-fugitive
git submodule add https://github.com/msanders/snipmate.vim.git bundle/snipmate
git submodule add https://github.com/tpope/vim-surround.git bundle/vim-surround
git submodule add https://github.com/tpope/vim-git.git bundle/vim-git
git submodule add https://github.com/ervandew/supertab.git bundle/supertab
git submodule add https://github.com/sontek/minibufexpl.vim.git bundle/minibufexpl
git submodule add https://github.com/wincent/Command-T.git bundle/command-t
git submodule add https://github.com/mitechie/pyflakes-pathogen.git bundle/pyflakes-pathogen
git submodule add https://github.com/mileszs/ack.vim.git bundle/ack
git submodule add https://github.com/sjl/gundo.vim.git bundle/gundo
git submodule add https://github.com/fs111/pydoc.vim.git bundle/pydoc
git submodule add https://github.com/vim-scripts/pep8.git bundle/pep8
git submodule add https://github.com/alfredodeza/pytest.vim.git bundle/pytest
git submodule add https://github.com/reinh/vim-makegreen bundle/vim-makegreen
git submodule add https://github.com/vim-scripts/TaskList.vim.git bundle/tasklist
git submodule add https://github.com/vim-scripts/The-NERD-tree.git bundle/the-nerd-tree
git submodule add https://github.com/sontek/rope-vim.git bundle/rope-vim
git submodule init
git submodule update
git submodule foreach git submodule init
git submodule foreach git submodule update

NOTE在安裝的過程當中,minibufexpl.vim.gitrope-vim.git沒有安裝成功,須要用戶名和密碼。

如今,咱們已經將vim配置放到了git倉庫中。執行完上面的操做後,在.vim目錄下會生成一個隱藏文件:.gitmodules。

UPDATED(20141020):

添加了這些插件做爲submodule後,這些插件中會產生一些untracked文件(好比bundle/snipmate/doc/tags 文件)。在.gitignore中過濾是不起做用的。

解決方法是(【9】是stackoverflow中所提問題,【10】是解決方案的出處):

By adding the ignore = dirty option to each one of the entries in the .gitmodules file.

[submodule "zen-coding-gedit3"]
    path = zen-coding-gedit3
    url = git://github.com/leafac/zen-coding-gedit3.git
    ignore = dirty

 

4. 將其提交到GitHub

因爲.vimrc 文件不在.vim目錄下,因此將其從~目錄copy.vim目錄,而後add(Please use method in UPDATED2)

git status
git commit -m "add .vim plugins"
cp ~/.vimrc .
git add .vimrc
git status
git commit -m "add .vimrc file"
git status
git remote add origin https://github.com/zhchnchn/VimConfig.git
git push -u origin master

UPDATED(20141020):

git push -u origin master:Push到遠程倉庫,同時設置跟蹤分支,下次push的時候,直接輸入git push便可,系統會自動用本地master分支跟蹤遠程master分支 。

UPDATED2(20141020)

爲了將全部的文件都置於版本控制下,咱們須要將~/.vimrc 移到~/.vim下(有gvimrc的話,將其一併移動),爲了讓他再也不是一個隱藏文件,咱們去掉了前面的點(.)【11】。

mv ~/.vimrc ~/.vim/vimrc
mv ~/.gvimrc ~/.vim/gvimrc

當啓動vim時,仍然會試圖尋找~下的.vimrc文件,因此咱們建立一個symbolic link。將~/.vim/vimrc文件link 到 ~/.vimrc文件。

ln -s ~/.vim/vimrc ~/.vimrc
ln -s ~/.vim/gvimrc ~/.gvimrc

將以上修改commit到github。

 

5. 如何將vim插件同步到別的機器上

 將.vim配置提交到Github以後,如何同步到別的機器上使用呢?

NOTE:下面所涉及的「本地」都是指別的機器的「本地」目錄。

(1)將.vim配置clone到別的機器的~/.vim目錄下(若是沒有.vim則新建一個)

git clone git@github.com:zhchnchn/VimConfig.git ~/.vim

(2)建立symbolic link,將~/.vim/vimrc文件link 到 ~/.vimrc文件。

ln -s ~/.vim/vimrc ~/.vimrc

(3)若是修改了本地的vimrc文件,在 git add和git commit以後,能夠直接git push提交到github上。

(4)查看clone到本地的bundle目錄下的各個插件目錄,發現它們都是空的,那是由於還沒同步到本地來。將他們同步到本地【11】:

~/.vim$ git submodule init
~/.vim$ git submodule update

前一條命令做用是「registers the submodule」。

後一條的做用是「Checks out the version of each plugin's repository which was committed to the .vim repository before」.,它會將各個插件下載到本地。

 

6. 如何在pathogen下安裝主題風格插件呢?

 pathogen 沒法安裝配色主題風格,由於它會將全部插件都安裝在bundle目錄下,而vim只認~/.vim/colors/下的主題風格。所以只能將主題插件手工放置於 ~/.vim/colors/下【14】。

好比要安裝下面的2個主題插件,須要將下載的插件中的 *.vim 文件(即solarized.vim、molokai.vim文件,而非包含*.vim 文件的目錄)拷貝至 ~/.vim/colors/目錄下(若是沒有則手動建立)。

而後在 .vimrc文件中設定主題:

" 配色方案
set background=dark
colorscheme solarized
"colorscheme molokai

 

 

Refer


1Turning Vim into a modern Python IDEhttp://www.sontek.net/blog/2011/05/07/turning_vim_into_a_modern_python_ide.html
2Turning Vim into a modern Python IDE(中譯文,其中有好多錯誤,請對照引文參考。http://python.42qu.com/11180003
3】教程:使用 pathogen + git 管理 Vim 插件(http://lostjs.com/2012/02/04/use-pathogen-and-git-to-manage-vimfiles/
4Ubuntu12.04安裝Githttp://www.cnblogs.com/zhcncn/p/4030078.html
5vim-pathogenhttps://github.com/tpope/vim-pathogen
6Git Submodule使用完整教程(http://www.kafeitu.me/git/2012/03/27/git-submodule.html

【7】Resolving a vim plugin mapping conflict - mapping already exists for \t (http://stackoverflow.com/questions/18346350/resolving-a-vim-plugin-mapping-conflict-mapping-already-exists-for-t)

【8】Pathogen does not load plugins(http://stackoverflow.com/questions/3383502/pathogen-does-not-load-plugins/6365667)

【9】How to get rid of git submodules untracked status?(http://stackoverflow.com/questions/5126765/how-to-get-rid-of-git-submodules-untracked-status)

【10】How to ignore changes in git submodules(http://www.nils-haldenwang.de/frameworks-and-tools/git/how-to-ignore-changes-in-git-submodules)

【11】Synchronizing plugins with git submodules and pathogen (http://vimcasts.org/transcripts/27/en/)

【12】A Brief Note On Pathogen For Vim(http://blog.darevay.com/2010/10/a-brief-note-on-pathogen-for-vim/)

【13】https://github.com/gmarik/Vundle.vim/issues/176

【14】所需即所獲:像 IDE 同樣使用 vim(https://github.com/yangyangwithgnu/use_vim_as_ide)

相關文章
相關標籤/搜索