最后一次更新我的博客已经是三年前的事情了,总是觉得自己在忙,其实是内心的懒惰在作祟。重新更新博客的决定已经在脑海里徘徊了许久,我希望自己的博客是一面映出自己年轻光阴的镜子,可以照耀自己前行的路,出于这样的想法,最近一段时间,我决定把目前正在工作的项目,使用的工具,语言,库以及关心的项目在这里一一苦竹刀刻!
使用VIM大概也有三年了。起初只是因为需要一个顺手的Python编辑器。最后无意中确定了VIM。之后的C++也转而使用VIM编写。近半年来,一直工作在Ubuntu下,VIM也顺理成章的成了all in one 的工具了。我知道Emacs可能是一个更加完美的编辑器,但几次的尝试后,我感觉我不适合它。是的,我必须这样的谦虚,因为我无意引来Emacser对我的攻击。这个方面的讨论已经不是科学与技术的范畴了,有些近乎宗教的狂热。
归结没有选择Emacs的原因可能有下面几种:
我没有真正花力气去使用它。这可能是最根本的原因了。
我不喜欢在我没有动作时Buffer们自己在动。毕竟是男人,还是由我来动比较好。
VIM遵循着典型的Unix系风格的哲学。界面简单洁,功能专注,易于扩展,方便组合。
无论谁第一次看到VIM时都不可能相信它就是传说中的”编辑器之神”,比起”神的编辑器"Emacs它看上去更加的寒酸,简陋。但是有趣的是,当你熟练掌握了VIM后,你的界面会更加的简陋。下面是我在写作此文时所用的VIM的状态。
除了编辑之外,VIM对功能的扩展是相当保守的,特别是Buffer与子进程之前的交互问题,经常受到诟病。不过VIM作者对此的坚守也成了VIM到目前为止还是那么短小精悍,快如闪电的原因。如果能通过其它方式实现的功能,VIM绝不会为此多花时间。正如许多其它的Unix系的工具一样,VIM将编辑器的那点事做到了极致。这一点,也正迎合了开源粉丝的一种图腾崇拜的喜好。在一点上,VIM与Emacs有着很明显的分歧。V说是E是化妆成编辑器的操作系统,而E而反唇相讥说V功能蹩脚。
功能的专注并不意味着VIM不能跟上自动化的脚本,开放丰满的脚本系统,灵活多样的应用接口,使得你可以方便的以任何一种你喜欢的方式与你喜欢的任何一种语言来扩展VIM。使之成为一个功能具备的超级IDE。如果你是一个程序员,VIM可以拥抱整个软件的开发周期。设计,编码,构建,测试,版本管理,邮件等基本上所有的开发动作你都可以找到在VIM上扩展。
如果说Emacs像有一个北方的大汉,带着浓厚的侵略性,那VIM更像一个江南的女子,对你千依百顺,或许出生贫寒,但只要你假以时日,好生调教,一定会出得厅堂,入得厨房。自从让自己适合Emacs失败后,我选择了让VIM来适应我。交流各自的my_vimrc成了VIMer之间乐此不疲的一项活动。其实不要指望可以把别人的配置文件拿来直接使用,我的习惯是从头到尾看一遍,找出自己需要却还没有的功能,再转换成自己的操作风格。
上面说了很多VIM的好,其实VIM也有很多让人疑憾的地方。这样的说法应该才是比较客观的。如果作为一个开发工具,VIM没有很好的工程管理方式,尽管有Project这样的脚本,但远不能与其它IDE相比。我目前的方式是用mksession来做管理工作场景。在智能提示方面,VIM确实可以实现智能提示,但你不要指望能达到VA的水平。不过,买了车,你就得每天去找停车场,取了老婆,你就得每天为忍受她的唠叨;选择了一个工具,你也就选择了一种生活方式。在没有智能提示的年代里诞生的伟大的程序员和软件作品一点也不比现在少。所以,不要放纵自己去养成那些毛病。