跟我一起学习VIM

跟我一起学习VIM – The Life Changing Editor

 


 

写在前面:Life Changing Editor

我是一个非常懒的人,对于效率有着近乎执拗的追求。比如我会花2个小时来写一个脚本,然后使用这个脚本瞬间完成一个任务,而不愿意花一个小时来手工完成这项任务,从绝对时间上来说,写脚本花的时间更长,但我依然乐此不疲。

工欲善其事,必先利其器,折腾各种各样的软件就成为了我的一大爱好,尤其是各种人称神器的工具类软件,而善用佳软是这类工具的聚集地,现在我使用的很多优秀的软件都得知于此,包括VIM,所以,如果你和我一样,希望拥有众多“神器”,让工作事半功倍,可以关注此站。

第一次听说VIM已经是离开校园参加工作之后的事,那时部门内部大多使用Source Insight代替Visual Studio编写代码,大家都被它的代码管理,自动完成,代码跳转等功能所吸引,但一个领导说了句很多Vimer经常会说,至今仍让我记忆尤新的一句话:

南中国的雷雨天有怒卷的压城云、低飞的鸟和小虫,有隐隐的轰隆声呜呜咽咽……还有一片肃穆里的电光一闪。那闪电几乎是一棵倒着生长的树,发光发亮的枝丫刚刚舒展,立马结出一枚爆炸的果实,那一声炸响从半空中跌落到窗前,炸得人一个激灵,杯中一圈涟漪。

很多孩子都有一个梦想:希望能够长大之后可以身着军装,头戴警帽,遇到坏人之后潇洒拔出枪,瞬间解决战斗,除暴安良,匡扶正义。我这样的程序员们也有一个梦想:希望学成之后可以像电影里黑客们一样,对着满屏幕闪烁的各种符 ,双手不离键盘噼里啪啦一阵乱敲,屏幕上的符 不断滚动,就攻破了几百公里之外的某某银行的服务器,向帐户里面增加一笔天文数字,然后潇洒的离去,神不知鬼不觉,留下不知所措的孩子们的梦想——警察叔叔们。这简直构成了程序员们的终极幻想:-P。VIM的出现让我感觉离幻想更近了一步,呃,别想错了,我是指——双手不离键盘,噼里啪啦,黑客的范儿。不可否认,扮酷也是促使我学习VIM的一个重要原因:-P。

在VIM的官方 站上,对每个插件的评价是这样分类的:

  • Life Changing
  • Helpful
  • Unfulfilling

而我想将这个分类应用到使用的软件上,对于VIM,它是毫无疑问的Life Changing

什么是VIM

  • VIM is the God of editors, EMACS is God’s editor
  • EMACS is actually an OS which pretends to be an editor

为什么选VIM

看到这篇文章的人有几个是比它们大的:-)

为什么选其它

  • 轻量级,迅速启动(相对于IDE)
  • 特性也许,美观也是一个诉求
    • 语法高亮
    • 自动对齐
    • 代码折叠
    • 自动补全
    • 显示行
    • 重定义Tab
    • 快速注释
    • 高级搜索,替代
    • 错误恢复
    • 迅速跳转
    • Mark

但是…

为什么犹豫选择它们

总有一些理由让我们一再犹豫的选择它们,或者勉强使用它们:

  • 太贵:虽然知道VS很贵,但看到价格时,还是被吓了一跳
    • Visual Studio Profession 2012 : 11645元
    • UtralEdit : 420元
    • Source Insight : 2500元
    • $$
    • $$
    • $$
  • 不能跨平台不容易扩展
    • VS, SI, UE,Notepad++这些只能在Windows上使用
    • Mac上的TextMate只能运行于Mac上

那么,还有别的选择么/span>

并且,VIM拥有让你不再犹豫的其它特性:

  • 无止尽的扩展:现在VIM的官方 站上已经有了4704个扩展,并且在不断增加…
  • 完美的跨平台:开源
    • Windows : gVim
    • Linux : 内置默认 (e.g., man page)
    • Mac : MacVim
  • 用起来很酷
  • 最关键的,$

废话结束,开始进入正题。


 

如何学习VIM

一秒钟变记事本

我见过很多人这样用,虽然说这很容易,但是有种暴殄天物的感觉,和给了你一把AK47,你却把它当成棍子使一样。要发挥AK47的作用,还请向下看。

VIM的基本用法

最好的入门教程非VIM自带的vimtutor莫属,它是VIM安装之后自带的简短教程,可以在安装目录下找到,只需半个小时左右的时间,就可以掌握VIM的绝大部分用法。这是迄今为止我见过的软件自带教程中最好的一个。

当然, 上的VIM教程也非常多,我之前看的是李果正的大家来学VIM,很适合入门。

另外推荐陈皓的简明VIM练级攻略,或者创意十足的游戏VIM大冒险。

VIM进阶:插件

在学完了上面任何一个教程之后,通过一段时间的练习,你已经可以非常熟练的使用VIM。即使是“裸奔”,VIM已经足够强大,能够完成日常的绝大部分工作。但VIM更加强大的是它的扩展机制,就像Firefox和Chrome的各种插件,它们将令我们的工具更加完美。 上有很多教程里写的插件已经过时,接下来我将介绍一些比较新的,非常有用的插件,看完之后,相信你一定会觉得蠢蠢欲动。

插件管理神器:Vundle

在这开始之前,先简单介绍VIM插件的管理方式。在我刚接触插件之时,安装一个插件需要:

  1. 去官 下载
  2. 解压
  3. 拷贝到VIM的安装目录
  4. 运行:help tags

这些步骤已经足够复杂,更加无法想象的是要更新或者删除一个插件时,因为它的文件分布在各个目录下,就比如Windows上的安装路径Application data用户数据注册表等等,除非你对VIM的插件机制和要删的插件了如直掌,否则你能难将它删除干净。所以一段时间之后,VIM的安装目录下简直就是一团乱麻,管理插件几乎成为了一项不可能完成的任务。想象一下,如果Windows上面没有软件管理工具,你如何安装,卸载一个软件吧。

但是这没有难倒聪明的Vimer们,他们利用VIM本身的特性,开发出了神器——Vundle,配合上GitHub,VIM插件的管理变得前所未有的简单。来对比一下使用Vundle如何管理插件:

在按照官方的教程安装好Vundle之后,要安装一个插件时,你只需要:

  1. 选好插件
  2. 在VIM的配置文件中加一句 Bundle 'you/script/path'
  3. 在VIM中运行 :BundleInstall

卸载时只需:

  1. 去除配置文件中的 Bundle 'you/script/name'
  2. 在VIM中运行 :BundleClean

更新插件就更加简单,只需一句 :BundleUpdate。现在你已经完全从粗活累活中解放了出来,从此注意力只需放在挑选自己喜欢的插件上,还有比这更美好的么面介绍的所有的插件都以它来管理。


 

配色方案

你是否觉得用了许多年的白底黑字有些刺眼,又或者你是否厌倦了那单调枯燥果是,那好,VIM提供了成百上千的配色方案,终有一款适合你。

在所有的配色当中,最受欢迎的是这款Solarized:

代码资源管理器现在已经成为了各种各样IDE的标配,这可以大大提高管理源代码的效率。这样的功能VIM自然不能少,NERD Tree提供了非常丰富的功能,不仅可以以VIM的方式用键盘来操作目录树,同时也可以像Windows资源管理器一样用鼠标来操作。

--help: 可以将打开目录树的功能绑定到你所喜欢的快捷键上,比如:map <leader>:NERDTreeToggle<CR>

  • CtrlP – fast file finder 

    想必使用过Visual Studio和Source Insight的人都非常喜爱这样一个功能:左边有一个Symbol窗口,它列出了当前文件中的宏、全局变量、函数、类等信息,鼠标点击时就会跳到相应的源代码所在的位置,非常便捷。Taglist就是实现这个功能的插件。可以说symbol窗口是程序员不可缺少的功能,当年有很多人热衷于借助taglist、ctags和cscope,将VIM打造成一个非常强大的Linux下的IDE,所以一直以来,taglist在VIM官方 站的scripts排列榜中一直高居榜首,成为VIM使用者的必备插件。

    --help: 最常见的做法也是将它绑定到一个快捷键上,比如:map <silent> <F9> :TlistToggle<CR>

  • Tagbar – tag generation and navigation 

    这是一个非常有用的插件,它能够标记文件中的FIXMETODO等信息,并将它们存放到一个任务列表当中,后面随时可以通过Tasklist跳转到这些标记的地方再来修改这些代码,是一个十分方便实用的Todo list工具。

    --help: 通常只需添加一个映射:map <leader>td <Plug>TaskList

  • 自动补全

    1. YouCompleteMe – visual assist for vim 

      现在它可以和上面介绍的YouCompleteMe插件一块使用,比如在敲完ifn时,YouCompleteMe会将这个snippet也放在下拉框中让你选择,这样你就不用去记何时按<TAB>来展开snippets,YouCompleteMe已经帮你完成。

      去它的 站看看,有几个视频,绝对亮瞎你的双眼(需要FQ)。

      --help: 它和YouCompleteMe一块使用时会有一定的冲突,因为两者都默认绑定了<TAB>键,可以参考各自的help文档,将其中一个绑定到其它的快捷键,或者借助其它的插件让它们兼容。

    2. Zen Coding – hi-speed coding for html/css 

      这是一个非常有用的插件,它能够实时的进行语法和编码风格的检查,利用它几乎可以做到编码完成后无编译错误。并且它还集成了静态检查工具:lint,可以让你的代码更加完美。更强大的它支持近百种编程语言,像是一个集大成的实时编译器。出现错误之后,可以非常方便的跳转到出错处。强烈推荐

      --help: 这是一个后台运行的插件,不需要手动的任何命令来激活它。

    3. Python-mode – Python in VIM

      如果你需要写Python,那么Python-mode是你一定不能错过的插件,靠它就可以把你的VIM打造成一个强大的Python IDE,因为它可以做到一个现代IDE能做的一切:

      • 查询Python文档
      • 语法及代码风格检查
      • 运行调试
      • 代码重构
      • ……

      所以,有了它,你就等于有了一个现代的Python IDE,各位Pythoner们,还等什么呢/p>

      --help: 默认情况下该插件已经绑定了几个快捷键:

    其它

    1. Tabularize – align everything 

      Tabularize

      这个插件的作用是用于按等 、冒 、表格等来对齐文本,参考下面这个初始化变量的例子:

      运行Tabularize /=可得:

      另一个常见的用法是格式化文件头:

      运行Tabularize /:/r0可得:

      另一种对齐方式,运行Tabularize /:/r1c1l0

      声明:本站部分文章及图片源自用户投稿,如本站任何资料有侵权请您尽早请联系jinwei@zod.com.cn进行处理,非常感谢!

    上一篇 2015年2月15日
    下一篇 2015年2月15日

    相关推荐