使用pathogen管理Vim插件并托管到Github
参照文章【1】【2】的办法,将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 off
call 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 :
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-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.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 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/目录下(如果没有则手动创建)。
- solarized(https://github.com/altercation/vim-colors-solarized )
- molokai(https://github.com/tomasr/molokai )
然后在 .vimrc文件中设定主题:
" 配色方案
set background=dark
colorscheme 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)
使用pathogen管理Vim插件并托管到Github的更多相关文章
- 用Vundle管理Vim插件
作为程序员,一个好用的Vim,是极其重要的,而插件能够使原本功能羸弱的Vim变得像其他功能强大的IDE一样好用.然而下载.配置插件的过程比较繁琐,大家往往需要自己进行下载/配置等操作,如果还涉及到更新 ...
- [vundle]利用vundle工具来管理vim插件
转自:http://os.51cto.com/art/201507/484174.htm Vim是Linux上一款用途广泛的轻量级文本编辑工具.虽然对普通的Linux用户来说开始学用起来难度相当大,但 ...
- 使用Vundle管理Vim插件
附:仓库地址 附:我自用的vim配置文件,里面注释很多,仅供参考. Vundle是一款Vim的插件管理软件(Linux),用起来很方便的原因有几点: 支持插件超多,可以来源于github.Vundle ...
- vim插件之pathogen,NERDTree,Command-T,Powerline
pathogen 功能说明 一个插件包往往具备多种功能,每个文件根据Vim的路径约定会放置到不同的目录下,通用插件放到plugin下,语法高亮插件放到syntax下,自动加载插件放到autoload下 ...
- 常用vim插件的安装、使用和管理
1.Ctags Ctags工具是用来遍历源代码文件生成tags文件,这些tags文件能被编辑器或者其他工具用来快速查找定位源代码中的符号,入变量名,函数名等.比如,tags文件就是Taglist和 ...
- 菜鸟vimer成长记——第4.0章、Vim插件管理利器-Vundle
定义 Vundle是vim bunler和简称,它是一个vim插件管理器. Vim本身缺乏对插件的有效管理,安装插件并配置.vimrc文件非常不便.gmarik受到Ruby的bunler的启发,开发了 ...
- vim插件和配置
vim插件和配置 插件 pathogen 可以方便地管理vim插件 在没有pathogen的情况下,vim插件的文件全部都放在.vim目录,卸载插件很麻烦,pathogen可以将不同的插件放在一个单独 ...
- vim插件安装总结
vim插件安装总结 vim 插件 vundle 插件对于vim来说是一个杀手级别的神器助手,能自动补全,语法高亮,文件搜索等等,有效地提升了编程效率.下面就个人的一些安装和使用进行一个总结. 自动管理 ...
- vim插件cscope使用方法
一.安装cscope 安装方式比较多样,可以在各自linux软件管理工具中安装,也可以去官网下载安装. sudo apt-get install cscope 二.插件安装 这里选择的是Vundle来 ...
随机推荐
- 结对实验报告-android计算器设计
一:引言 目前手机可以说是普及率非常高的电子设备了,由于其便于携带,使用方便,资费适中等等原因,现在手机已经在一定程度开始代替固定电话的通话功能,以及一些原来电脑软件上的功能了.手机上的软件也随着 ...
- Hash哈希(二)一致性Hash(C++实现)
一致性Hash 一致性哈希算法在1997年由麻省理工学院提出的一种分布式哈希(DHT)实现算法,设计目标是为了解决因特网中的热点(Hot spot)问题,经常用于分布式.负载均衡等. 原理 一致哈希是 ...
- 找出数组中最长的连续数字序列(JavaScript实现)
原始题目: 给定一个无序的整数序列, 找最长的连续数字序列. 例如: 给定[100, 4, 200, 1, 3, 2], 最长的连续数字序列是[1, 2, 3, 4]. 小菜给出的解法: functi ...
- Linux服务器Cache占用过多内存导致系统内存不足问题的排查解决(续)
作者: 大圆那些事 | 文章可以转载,请以超链接形式标明文章原始出处和作者信息 网址: http://www.cnblogs.com/panfeng412/archive/2013/12/17/dro ...
- C++ 模板与泛型编程
<C++ Primer 4th>读书笔记 所谓泛型编程就是以独立于任何特定类型的方式编写代码.泛型编程与面向对象编程一样,都依赖于某种形式的多态性. 面向对象编程中的多态性在运行时应用于存 ...
- HTML5中已经不支持元素汇总,持续更新
HTML5中已经不支持以下的元素,不建议在进行开发时再使用以下的元素. 1.acronym(建议abbr) : 定义首字母缩写 2.applet(建议object): 定义 applet 3.bas ...
- atitit.表格的绑定client side 最佳实践
atitit.表格的绑定client side 最佳实践 1. 框架选型 1 2. #---原理和流程 1 1. 方法1 1 2. Dwr 例子 1 3. 方法2 2 4. Jq例如 2 1. 框架选 ...
- paip.web数据绑定 下拉框的api设计 选择框 uapi python .net java swing jsf总结
paip.web数据绑定 下拉框的api设计 选择框 uapi python .net java swing jsf总结 ====总结: 数据绑定下拉框,Uapi 1.最好的是默认绑定..Map(k ...
- Hello.class所在路径下, 输入命令:java Hello.class,会出现什么结果,为什么?
所在路径下, 输入命令:java Hello.class: 因为DOS没有规定路径,所有么有在默认路径下找到Hello.class文件,导致提示 错误: 找不到或无法加载主类 Hello.class.
- bzoj 3517: 翻硬币
3517: 翻硬币 Time Limit: 1 Sec Memory Limit: 128 MB Description 有一个n行n列的棋盘,每个格子上都有一个硬币,且n为偶数.每个硬币要么是正面 ...