自己使用vim编辑代码也是有一段时间来,目前阅读、修改、写代码基本都离不开他了。本人使用过的编辑器很少,以前一般都是使用程序开发IDE自带的编辑器些代码,没觉得什么方便。开始使用vim的刚刚接触linux程序开发的时候,那时看到其他人一般都是在windows下使用Source Insight 编辑代码,然后在虚拟机linux下make。我比较喜欢接触新的东西,而且刚接触inux对命令和使用环境都不是很熟悉,因此想深入的了解linux下的使用环境。决定在自己的电脑上安装linux操作系统(本人现在使用debian 5.0发行版,欢迎大家交流),不使用虚拟机。
在linux环境下,首要的任务的解决如何阅读、编辑代码,通过上网搜索vim Emacs gedit等一些,反正是一开始接触和最终使用的是vim。通过的学习vim中文帮助文档,最新Vim version 7.2用户手册的链接地址:
http://vimcdoc.sourceforge.net/doc/usr_toc.html
按照usr_toc的流程走下来,发现vim真如大家说的是个强大的编辑软件,并掌握了vim初步的编辑技巧。在此特别感谢vim的开发维护人员、vim script贡献者,和把帮助文档翻译成中文的作者。
在工作中,我经常给同事介绍vim,有些人可能是比较喜欢漂亮GUI的编辑器,有很多的按钮,不需要配置和记住众多的命令,只需要鼠标点点就能完成大多数的操作。个人习惯不一样,我认为写代码最需要的是一个高效的编辑器,而vim是按目前本人的使用的习惯来讲,是最佳的利器。他能够使我不需要经常的腾出右手来定位光标的位置、搜索关键字、函数跳转等一些操作,这些操作通用的操作只需要在键盘上就可以实现。界面简洁,没有多余的界面图形,能够最大腾出的显示空间来展示程序代码。
vim的使用操作以及技巧在帮助文档中都有详细的介绍,大家可以仔细的阅读,并按照文档中的命令及操作做相应的练习,很快就能够熟悉vim的使用。当然在日常的编辑程序中要坚持使用,孰能生巧,使用vim编辑命令能够不用经过思考直接敲出,那么这时你已经真正入门了。
在这里跟大家分享我在编写c/c++代码是使用的vim scripts,这些脚本插件在编辑程序时能够达到事半功倍的效果。如果你在使用发现不好用,或者没有实现你想要的功能,那肯定是你没有配置好脚本,可以留言,大家沟通沟通。
- AutoClose -- 自动补全 (http://www.vim.org/scripts/script.php?script_id=1849 )
AutoClose script主要实现括号,引号补全功能,补全的符号 [ ( { " ' 。使用这个脚本的时候,当你输入“(”时,最终的显示是(|),|表示光标的位置,当你再输入“)”时,光标移出括号外面。这种方式在多层嵌套的括号中同样可以实现。在编写程序时,自动补全的确会带来很大的方便,这个插件还比较智能,基本能够实现我们所需要的功能。不过这个插件目前我在使用的过程中发现有个缺陷,就是在嵌套的括号中再插入一组括号,右括号插入不了,只能采取关闭插件功能,或者采用粘贴的方式。例如:
if ( ( a > b && c > d )
你要在“b”后面插一个右括号,你会发现无法完成操作。当你insert模式下输入“)”时,光标直接跳到“d”后面的括号“)”之后,这种情况下我解决这个问题的办法是关闭插件,输入“/a” AutoClose Off,然后插入右括号;再打开插件功能,输入“/a” AutoClose On。不知道大家有什么好的方法。
- BufExplorer -- 缓冲区(文件)浏览器 (http://www.vim.org/scripts/script.php?script_id=42 )
BufExplorer能够浏览vim已打开的缓冲区(文件),然后你可以选择并跳转到相应的缓冲区(文件)。使用bufexplorer,你可以通过预定义的一些公共接口快捷的切换缓冲区:
- '/be' 在当前窗口打开buffer浏览器
- '/bs' 在当前窗口强制水平分割打开buffer浏览器
- '/bv' 在当前窗口强制垂直分割打开buffer浏览器
当bufexplorer窗口打开时,你可以使用键盘移动(hjkl )进行选择你所要的文件,然后使用回车或者鼠标左击选中你所要打开的缓冲区。如果你想要在新的标签中打开,可以使用shift+enter或者't'。需要注意的是如果你所要的文件已经在标签中打开,那么bufexplorer能够自动切换到你选择的文件,详细请参考该脚本提供的帮助信息。
- EnhancedCommentify -- 程序代码注释 (http://www.vim.org/scripts/script.php?script_id=23 )
EnhancedCommentify这个脚本是用于代码注释,只需简单的使用‘/x’这个命令,就可以实现注释和反注释。这个脚本的行为是,如果你这段代码没有注释,输入'/x'就会把这段代码注释掉,反之则去掉代码注释。举个例子,下面的代码中,如果你的光标在第3行,你输入'/x',代码会被注释掉,结果如第7行所示;反之,在第7行输入'/x’,结果就如第3行所示:
1
2 if (a > b ) {
3 printf ("hello world /n " );
4 }
5
6 if (a > b ) {
7 /* printf("hello world/n"); */
8 }
要实现上面的注释自动缩进、在/* */填充空格,需要定义两个全局变量来控制脚本的执行.你可以在.vimrc中进行定义,以控制制缩进、注释样式等来符合你的要求。详细变量也参脚本说明。在我的.vimrc中定义的变量
1 let g:EnhCommentifyRespectIndent= 'Yes'
2 let g:EnhCommentifyPretty= 'Yes'
- Porject -- 管理多个工程及源文件 (http://www.vim.org/scripts/script.php?script_id=69 )
Project插件用来管理多个工程及源文件,你可以使用这个插件的来创建一些经常浏览的文件列表,这个列表可以显示在vim窗口的左边,你可以选中需要打开的文件名并按回车,或者双击以打开文件。你也可以让这个脚本在选择文件的时候运行vim脚本,例如修改环境变量$PATH等。这使得在多个工程间使用不同的环境变量变的非常容易。
屏幕快照:
- Supertab -- 输入模式下自动补全 (http://www.vim.org/scripts/script.php?script_id=1643 )
Supertab的目标是满足你在输入时使用tab键实现补全功能,来提高你的输入效率。
- taglist -- 源代码浏览插件 (http://www.vim.org/scripts/script.php?script_id=273 )
taglist是vim的源代码浏览插件,提供源代码文件整体结构预览,类似于windows下的VS2005、UE等IDE的类、变量浏览器。该插件通过ctags程序搜索源代码,把源代码中的函数、变量、类、结构等罗列在taglist标签列表中,方便浏览源代码。这是网上下载次数最多、最受喜爱的插件。也是我最经常用的插件之一,主要的功能:
- vim窗口中显示在文件中定义的标签(函数,类,结构体,变量等等)。
- 在切换或打开新的文件时自动更新标签列表。
- 在标签列表中选中一个标签,光标自动跳转到该标签对应的源文件中。
- 自动高亮当前标签。
- 根据标签的种类自动进行分组。
- ... etc。
屏幕快照: