从初次接触VIM,到现在已经有好些年时间了。在软件开发中使用VIM,不过是近两年的事情。对VIM的了解远远算不上深入,不过还是把自己使用VIM的一些经验写出来,希望对VIM的推广做一份贡献。
本系列文章主要介绍我自己在使用VIM开发软件项目的一些经验。本篇是序章,务虚为主。
在使用VIM进行软件开发之前,我使用的工具是Source Insight,相信大家并不陌生。Source Insight是一个比较不错工具,特别是在浏览代码方面。在面对成百上千个文件组成的陌生源代码时,使用Source Insight可以让你很快的了解软件的主体流程、调用关系、类型定义……。使用Source Insight写代码也不错,它的自动补全功能很强,似乎使用拷贝、粘贴,加上自动补全,就可以完成代码了。不再使用Source Insight的原因有二,一是Source Insight只支持windows,不能在Linux上用;二是不想再用盗版的Source Insight。
在决定使用VIM前,也在VIM和EMACS犹豫了很久,最终懒惰的天性让我放弃了EMACS:实在是不习惯在移动光标时,也要用两只手按住CTRL/ALT/SHIFT再加个什么键;我的天性喜欢偷懒,能用一个手指做的事,不想用两个手指完成。所以最终选择了使用VIM。现在感觉,VIM和EMACS在文本编辑方面不分伯仲。EMACS的优势,在于它的可扩展性,使它可以完成很多和文本编辑无关的事情;不过这也造成了它的过于庞大。
刚改用VIM,最不适应的是不能再用鼠标“指哪儿打哪儿”了(VIM当然支持鼠标,只是双手在键盘、鼠标间切换,很是影响效率),然 后是拷贝、粘贴,然后是查看调用关系,函数间跳转,再然后……总之,刚开始的一段时间非常痛苦,效率也非常的低,甚至总是想着放弃。经过这段时间以后,逐 渐摸到一些窍门,也渐渐的知道到哪里去寻求帮助,在哪儿可以找到VIM的资源,工作效率一点点提升了上来。到现在,工作中已经离不开VIM了,VIM成了 计算机中缺省的文本编辑工具!
其实,对VIM和EMACS这样的工具来说,它们最强大之处,在于它们的可定制性。由于它们的可定制性,你完全 可以定制出一个符合你自己编辑习惯的编辑器,在这样一个编辑器里,你的工作效率将达到最高。当然,要达到这样的境界,你需要付出非常坚苦的努力!如果你的 工作是以文本编辑为主,例如,你是一个程序员,那么付出这种努力是值得的,也是有回报的。如果你没有很多文本编辑工作要做,那么也没有必要耗费这么大的力 气,来学习这些工具。
最后对VIM的初学者提一些建议:
1. 如果你的工作以文本编辑(不是指Microsoft word中的文本编辑)为主,那么学习VIM或EMACS是值得的;
2. 刚开始使用VIM或EMACS的经历是很痛苦的,因为它们可能完成不同于你已经习惯的windows编辑器。我的建议是:坚持下去!咬牙坚持下去!你会获得回报的。
3. VIM的帮助文件,是学习如何高效使用VIM的重要资源,一定要多读帮助文件。如果你是因为害怕读英文的帮助文件而不肯学习VIM的话,那么,到http://vimcdoc.sourceforge.net/去看一下,那里有翻译好的VIM 7.0的帮助文件,按照说明安装好后,再使用“:help”命令,你就可以看到翻译好的帮助文件了。如果你看到的还是英文的帮助文件,说明“helplang”选项设置的不正确(似乎在windows上,helplang选项被设置为大写的Cn,而不是cn,所以无法看到中文的help文件)。使用“:set helplang=cn”命令重新设置一下helplang选项,然后再使用“:help”命令,就可以看到中文帮助文件了。或者你可以使用“:help xxx@cn”来查看xxx的中文帮助文件。
4. 如果你是第一次接触VIM,那么执行一下“:help tutor”或“:help tutor@cn”,你就会看到一个30分钟的VIM教程,会教会你VIM的一些基本命令。
5. 有时间的话,一定要阅读一下Bram Moolenaar(VIM的主要作者)写的Seven habits of effective text editing(七个有效的文本编辑习惯),你可以知道怎样提高你的编辑效率。在http://vimcdoc.sourceforge.net/提供的PDF文件的附录二,你可以看到它的中文译本。
本系列文章都针对VIM 7.0版本,如果这里介绍的功能在你的VIM中不存在,不妨升级到VIM 7.0后再试一次。
我以Linux版本的VIM 7.0为例。VIM也有支持windows的版本,可以到http://www.vim.org/下载已经预编译好的windows版本的VIM 7.0。
文章尽量不涉及具体的软件源代码,如果确实需要,则以VIM 7.0的源代码为例。此代码可以也可以在VIM的主页上下载,我把它解压在~/src/vim70目录下。以后就以此目录为例进行讲解。
附 图是我所使用VIM环境,在这副图中,我打开了三个标签页,一个是主编程区,一个是打开的.vimrc文件,另外一个是草稿区。在主编程标签页中有几个不 同的窗口,分别是当前打开的buffer,当前文件中的tag,help窗口,lookupfile窗口,src/main.c和src/edit.c。 其中使用了三个VIM插件(plugin):winmanager, taglist, lookupfile。
从这副图中可以看到VIM的一些特性:多标签支持、多窗口支持、插件支持、语法高亮功能、文本折叠功能……;这些特性,以及其它数不清的特性,我都将在后续文章中尽量给予介绍。
上图是GUI界面的VIM,下图是控制台下的VIM的抓图。这是我通常的开发方式:使用putty远程登录到linux服务器上,使用控制台的VIM开发软件:
对VIM的了解有限,请多请教。
[参考文档]
1. VIM帮助文件
2. http://vimcdoc.sourceforge.net/