长久以来,我管理 Vim 配置的方式都非常原始—— zip 打包,然后发到邮箱上。偶尔会发生忘记备份,或者配置混淆的状况,不过由于懒筋发作,竟然这个方案就这么用了两年。

终有一天,我觉得这个方法太笨了,作为一个高效程序员怎么能使用这么纯手工的备份方案,Vim 可是我的吃饭家伙啊。

Vim 配置备份最麻烦的部分就是脚本管理了,如果不先解决脚本管理,多次安装/卸载 Vim 脚本之后配置文件夹肯定乱糟糟的。于是我去找有什么潮流的插件管理方案,找到了最好的工具:Vundle(项目页)。

说它最好是基于几个理由:

  • 灵感来源于 Ruby 社区的 Bundle 工具,语法相似。
  • 配置干净,只需在 .vimrc 里面写入需要安装的脚本,就可以使 Vim 自动安装。
  • 可以从 github 上安装 Vim 脚本

详细的使用可以参考项目页的教程。

由于 Vundle 从安装到使用都非常适合脚本化,所以我在学会这个工具之后马上写了一个安装脚本,加上我的 .vimrc 等文件,放到了 github(chloerei/vimrc)上。

现在我想要在一台新电脑还原我的 vim 配置,只要确保有 vim,ruby,rake,rvm 的情况下,运行以下命令:

git clone git@github.com:chloerei/vimrc.git
cd vimrc
rake deploy

我熟悉的配置就会部署到电脑上。

不妨讲解一下 Rakefile 文件,这是 rake deploy 魔法的秘密。

desc "deploy vimrc"
task :deploy do
# Bundle and scripts
system 'git clone http://github.com/gmarik/vundle.git ~/.vim/bundle/vundle'
system 'cp .vimrc .gvimrc ~/'
system 'vim +BundleInstall +qa'
system 'cd ~/.vim/bundle/Command-T/ruby/command-t/; rvm system do ruby extconf.rb; make; cd -' # snipmate-snippets
system 'git submodule init; git submodule update'
system 'cd snipmate-snippets/; rake deploy_local; cd -'
end

第 1~3 个 system 命令安装了 vundle,并且打开 vim 使用 BundleInstall 命令安装所有写在 .vimrc 里的脚本。 第 4 个 system 命令对 Command-T 这个脚本进行了本地编译。 最后 2 个 system 命令用 git submodule 抓取了我放在另外的 github 源的 snipmate 代码片段。

由于我对 Rake 毕竟熟悉,所以脚本用了 Rakefile 的形式,其他开发者完全可以用 make 或者 bash 来写脚本。而除了 1~3 个 system 调用,后面的处理都是可选的,取决于需要什么 vim scrpit。

每个 Vimer 都有自己的喜好配置,我这份配置只算抛砖引玉,重要的是用 vundle + github 的备份方案。所以,行动起来吧,备份你的 vimrc。

Vundle,Vim 的 Bundle(转)的更多相关文章

  1. vim 安装Vundle.vim

    1.下载 git clone https://github.com/VundleVim/Vundle.vim.git ~/.vim/bundle/Vundle.vim 2.配置vimrc set no ...

  2. vim安装bundle和使用

    一.准备工作 安装Git(因为下面我们选择的插件管理器需要使用到它)安装其他插件前首先需要选择一个Vim插件管理器,我这里选择的是Vundle,Vundle的工作过程中需要通过Git自动从远程创库同步 ...

  3. Ubuntu13.04配置:Vim+Syntastic+Vundle+YouCompleteMe

    序言 使用Ubuntu和vim已经有一段时间了,对于Vim下的插件应用,我总是抱着一股狂热的态度.这次,又在网上闲逛着,发现了一个个人博客提到了Vim代码补全这回事,并提到了YouCompleteMe ...

  4. 【转】Ubuntu13.04配置:Vim+Syntastic+Vundle+YouCompleteMe

    原文网址:http://www.cnblogs.com/csuftzzk/p/3435710.html 序言 使用Ubuntu和vim已经有一段时间了,对于Vim下的插件应用,我总是抱着一股狂热的态度 ...

  5. vundle的安装笔记-20160721

    vundle是一个vim管理插件, 而bundle是命令, 用来操作vundle的. bundle 英[ˈbʌndəl] 美[ˈbʌndəl] n. 捆,束,包:大量:一大笔钱:极度 v. 归拢:捆: ...

  6. vundle就是vim bundle的插件管理成ide

    如何配置一个高效的php编辑环境, 很好 对vundle的操作, 除了仓库名称是vundle.git (*.git就是仓库) 和 本地目录名是 vundle之外, 其他的操作都是bundle git ...

  7. vim+vundle配置

    Linux环境下写代码虽然没有IDE,但通过给vim配置几个插件也足够好用.一般常用的插件主要包括几类,查找文件,查找符号的定义或者声明(函数,变量等)以及自动补全功能.一般流程都是下载需要的工具,然 ...

  8. Vim插件管理器Vundle使用

    参考地址:http://www.linuxidc.com/Linux/2012-12/75684.htm Vundle(Vim bundle) 是一个vim的插件管理器. 其Github地址为: ht ...

  9. VIM使用(一) VIM插件管理利器-vundle

    有关VIM的文件网上一大堆,这里只是记录一下我新配置环境的步骤.以备查看参考. sudo apt-get install gitgit clone https://github.com/gmarik/ ...

随机推荐

  1. 20. Dog,Man's Best Friend 狗,人类最好的朋友

    . Dog,Man's Best Friend 狗,人类最好的朋友 ①The dogs has always been considered man's best friend.Always note ...

  2. c++ => new/delete

    new的具体使用方式如下: 类型 *变量名 = new 类型; delete 变量 / delete[] 变量; 类型包括数组.结构体和类 数组申请动态内存后,要使用delete[]才能把内存清除干净 ...

  3. python小练习--属性

    箭头这个作业: class Box:#定义一个类名为Box,类名后不必有括号,类包含类属性和类方法,这个类没有定义类属性 '''这是一个计算体积的类'''#这是这个类的__doc__属性,执行类后就可 ...

  4. 3D indoor map positioning with a smartphone image

    menu 1. 基于Tango的三维建模技术(SLAM)(视觉SLAM,RGBD单目深度摄像机+罗盘仪)导出或不导出->Android 三维游戏开发技术(普通Android手机) 2. 基于An ...

  5. c++内存管理方式

    概述 本章总结一些关于个人对内存管理的理解,主要包括如下内容: 内存管理原则 优秀的接口 智能指针的作用在哪里? 内存管理原则 学c++的同学都知道这个内存管理原则,就是“谁创建,谁释放”或者说“谁申 ...

  6. SSH中设置字符编码防止乱码

    1.在web.xml中加入一个过滤器和过滤范围的配置 <filter><filter-name>encoding</filter-name><filter-c ...

  7. [svn] TortoisSVN的Blam功能

    团队开发中,我们必须要面对多个人对同一个文件进行修改的情况. 多人修改同一文件,往往就会发生很多的问题,或者随着文件中代码的数量不断增加.当我们必须要使用文件中的其他人写的代码,或者代码发生bug之后 ...

  8. Spring Boot 应用系列 3 -- Spring Boot 2 整合MyBatis和Druid,多数据源

    本文演示多数据源(MySQL+SQL Server)的配置,并且我引入了分页插件pagehelper. 1. 项目结构 (1)db.properties存储数据源和连接池配置. (2)两个数据源的ma ...

  9. 唯品会osp简介(转)

    转自 https://blog.csdn.net/panyongcsd/article/details/58617810 公司(VIP)从2015年开始在内部推动Venus框架的使用,这是一款基于Ap ...

  10. artdialog(4.1.7)弹出框

    artDialog弹出框 <link href="/js/artDialog/skins/default.css" rel="stylesheet" /& ...