使用pathogen管理Vim外掛程式並託管到Github 參照文章【1】【2】的辦法,將vim打造成一個Python開發環境。文章中使用的是 pathogen + git 來管理 Vim 外掛程式的。對這種__Python

來源:互聯網
上載者:User
將vim打造成一個Python開發環境。文章中使用的是 pathogen + git 來管理 Vim 外掛程式的。對這種方式還不太明白的同學可以參考【3】中的介紹。pathogen 改變了原先 Vim 只能把外掛程式全部扔到 .vim 目錄下的操作方式,使得各個外掛程式可以以一個獨立的檔案夾存在於 .vim/bundle 目錄中,添加和刪除外掛程式都變的非常清爽。使用 git 強大的子模組管理功能,可以實現方便的外掛程式安裝和自動升級。

  1. 準備工作

建立.vim目錄,以及其下的autoload和bundle目錄。(如果先前已有.vim目錄,可以先備份一下)

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

如果Ubuntu中沒有安裝Git,需要首先安裝Git【4】。

  2. 安裝pathogen

下載vim-pathogen【5】,將zip包中autoload下的pathogen.vim檔案copy到 ~/.vim/autoload檔案夾下。

然後添加下面的命令到~/.vimrc檔案中(.vimrc檔案不存在的話,先建立.vimrc檔案)。

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

當運行pathogen命令的時候檔案格式檢測必須關閉,所以把filetype off放到最前面(UPTATED(20141022))。

這樣,pathogen外掛程式就安裝好了。

UPDATED(20141017)

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

 

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.

解決方案是:在~/.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添加Plugin到Git Repository中

Git Submodule的作用,簡單來說就是可以將別人的 git 掛入到你目前 git 的任何位置。添加所有的vim plugins作為我們當前Repository的submodule。

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

在~/.vim目錄下執行以下命令

git submodule add http://github.com/tpope/vim-fugitive.git bundle/vim-fugitivegit submodule add https://github.com/msanders/snipmate.vim.git bundle/snipmategit submodule add https://github.com/tpope/vim-surround.git bundle/vim-surroundgit submodule add https://github.com/tpope/vim-git.git bundle/vim-gitgit submodule add https://github.com/ervandew/supertab.git bundle/supertabgit submodule add https://github.com/sontek/minibufexpl.vim.git bundle/minibufexplgit submodule add https://github.com/wincent/Command-T.git bundle/command-tgit submodule add https://github.com/mitechie/pyflakes-pathogen.git bundle/pyflakes-pathogengit submodule add https://github.com/mileszs/ack.vim.git bundle/ackgit submodule add https://github.com/sjl/gundo.vim.git bundle/gundogit submodule add https://github.com/fs111/pydoc.vim.git bundle/pydocgit submodule add https://github.com/vim-scripts/pep8.git bundle/pep8git submodule add https://github.com/alfredodeza/pytest.vim.git bundle/pytestgit submodule add https://github.com/reinh/vim-makegreen bundle/vim-makegreengit submodule add https://github.com/vim-scripts/TaskList.vim.git bundle/tasklistgit submodule add https://github.com/vim-scripts/The-NERD-tree.git bundle/the-nerd-treegit submodule add https://github.com/sontek/rope-vim.git bundle/rope-vimgit submodule initgit submodule updategit submodule foreach git submodule initgit submodule foreach git submodule update

NOTE:在安裝的過程中,minibufexpl.vim.git和rope-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 statusgit commit -m "add .vim plugins"cp ~/.vimrc .git add .vimrcgit statusgit commit -m "add .vimrc file"git statusgit remote add origin https://github.com/zhchnchn/VimConfig.gitgit 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/vimrcmv ~/.gvimrc ~/.vim/gvimrc

當啟動vim時,仍然會試圖尋找~下的.vimrc檔案,所以我們建立一個symbolic link。將~/.vim/vimrc檔案link 到 ~/.vimrc檔案。

ln -s ~/.vim/vimrc ~/.vimrcln -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/目錄下(如果沒有則手動建立)。 solarized(https://github.com/altercation/vim-colors-solarized ) molokai(https://github.com/tomasr/molokai )

然後在 .vimrc檔案中設定主題:

" 色彩配置set background=darkcolorscheme solarized"colorscheme molokai

 

  Refer


【1】Turning Vim into a modern Python IDE(http://www.sontek.net/blog/2011/05/07/turning_vim_into_a_modern_python_ide.html) 
【2】Turning 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/) 
【4】Ubuntu12.04安裝Git(http://www.cnblogs.com/zhcncn/p/4030078.html) 
【5】vim-pathogen(https://github.com/tpope/vim-pathogen) 
【6】Git 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)

相關文章

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.