shepherdwind

再谈vim

一年前谈到vim,现在过去了这么久,开始接触一些其他编辑器,有了新的看法,在此记录一下。

vim有相对于其他编辑器的优势,同样,有很多缺点。我觉得说vim要比ide好,这是不对的,vim好用,其他编辑器同样好用,甚至更好用。

我感觉,vim适合开发前端,但肯定不一定适合其他语言,比如java。

下面说说对于这个问题的感受:

第一,vim对硬件没有要求

最初使用vim,只是因为我的第一台个人电脑(一个10寸的上网本),能够跑起来的编辑器只有vim,没有办法,只能硬着头皮作下去。然后就这样,4年过去了,现在用的mac air,同样是最低配的,chrome + eclipse基本上就很卡很卡了,vim还是完全没有问题。也许对于很多人而言,硬件不是问题,但是vim让你对硬件没有要求,这点很重要,有时候对硬件的需求像是永远填补不满的欲望。

俗话说,穷人家的孩子早当家。能够适应恶劣的硬件环境,从长远反正来看,是一种修行的必须经历的过程。

第二,vimscript

用得越多,我越觉得vimscript是vim最好的地方。

如果说到语言的比较,大多数程序员会撸起衣袖,相互拉扯,磨刀霍霍的气势。每个人觉得自己用的语言是最完美的,但是如果说vimscript是垃圾语言,没有人会反对。

确实,从语言角度来看,vimscript太弱了。但是,在jQuery出现之前,在javasciprt the good parts出现之前,大家同样觉得javascript是垃圾语言。vimscript作为编辑器内置的语言,是很好用的。用一句话来说,就是vim is vimscript。

我觉得一门语言是否好,要看它是否好用,是否适合它所运行的环境。vim里的所有操作,都是vimscript。这一点很重要,很多人觉得要记住那么多的快捷键,非常麻烦,实际上,你可以把操作vim看做是编程过程。因为,操作vim,就是写vimscript的过程,作为程序员,学习一门语言应该不是难事。

把操作vim当初编程,我们首先得学习这门语言的基础只是,在vim就是vim配置文件,还有基本的操作,模式等。学会这些基本没什么问题,有vimtutor。后面真正用上vim来写代码,你会有一种感觉,关于如何使用vim的知识,是永远学不完的。

最近,经常有人拿vim和sublime比较,sublime学到了vim的轻巧,同样有IDE的简单。相比而言,vim似乎要繁琐,无聊得多。实际上,这就是vim的风格,你需要花很多经历去学习,去折腾,受到挫折。其他编辑器强调的是一体化,功能定制好,sublime上手只需要一天,你不需要去折腾什么,一切都很好了,IDE也同样如此。

两者的主要区别的,vim你需要会写程序,而后者,只需要学会配置文件就行了,甚至配置都是可视化的。有人说,sublime之类的,我们关注的是写代码本身,而不需要关注编辑器,用vim,你得同时操作一门语言,一些繁琐毫无意义得快捷键。

从我的角度而言,操作vim的过程和写代码本身是一种事情,作为程序员,有一种程序可以用来操作正在写的代码,这不是很有趣的事情吧。在程序员的世界了,程序拥有最高的自由,在vim里,写程序的过程是自由的。那些其他人看起来无意义的快捷键,对于我而言是有意义的。就像代码对于非程序员而言就像天书一样,但程序员会觉得很美。

总结一下:

现代的编辑器,都非常优秀,有时候在折腾了一整天的vim插件后,我非常沮丧,觉得vim没救了。后来我慢慢的明白了,试图让vim做所有事情,是不现实的。慢慢的,我也不再推荐其人用vim了,这种折腾过程,有时候还是挺痛苦的,自由的代价,可能不是所有人都喜欢这样。如果有足够的时间,比如是大学生,还是很值得体验一下vim的。

一旦能够享受vim给的自由,你会爱不释手的。其他编辑器虽然很好,很舒服,但那都是别人的编辑器,你永远驯服不了。这是我对这个问题对回答,vim的优势所在。

最后推荐两个资料

  1. vimscript教程。非常优秀的教程,打算深入学习vim的可以看看,vim文档虽然很详细,但是太零散了,这本书系统的讲解vimscript。另外,非常喜欢这个书名,Learn Vimscript the hard way,the hard way对于vim来说,太适合了。
  2. vimcasts.org,一个关于vim的播客,分享一些很多很玄很酷的技巧,推荐被vim折腾过的人看看,可以大大增加你继续学习下去的信心。