vi/vim使用进阶: 序言

<< 返回vim使用进阶: 目录

  从初次接触vim,到现在已经有好些年时间了。在软件开发中使用vim,不过是近两年的事情。对vim的了解远远算不上深入,不过还是把自己使用vim的一些经验写出来,希望对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手册 (help files) 是学习如何高效使用vim的重要资源,一定要多读手册。如果你是因为害怕读英文手册而不肯学习vim的话,那么,到vim中文文档下载vim 7.0的中文手册,安装好后,再使用”:help @cn”命令,你就可以看到中文手册了。
  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的版本,可以到vim主页下载预编译的的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的一些特性:多标签支持(tab)、多窗口支持、插件支持(plugin)、语法高亮功能(syntax)文本折叠功能(folding)……这些特性,以及其它数不清的特性,我都将在后续文章中尽量给予介绍。

  上图是GUI界面的vim,下图是控制台(console)下的vim的抓图。这是我通常的开发方式:使用putty远程登录到linux服务器上,使用控制台的vim开发软件:

  对vim的了解有限,请多指教。

<< 返回vim使用进阶: 目录

“vi/vim使用进阶: 序言”的25个回复

  1. 【此代码可以也可以在vim主页下载,我把它解压在~/src/vim70目录下。】
    易水你好,我按照你说的方法下载源码解压后,main.c文件是在D:\Program Files\Vim\src\vim70\src目录下,请问这样跟你的目录结构一样吗?谢谢!

  2. 请问您使用的vim是gvim吗?我用的是占用终端的vim,看上去和你的不一样。。。
    另外请教一个问题,我的项目里有很多文件,如果使用您介绍的winmager插件的话,每打开一个文件都要占一个分隔窗口,那根本就没法看了。。。能不能让所有文件都用一个窗口,然后自己切换?

  3. 请问博主的背景色和字体是怎么设置的,看起来挺漂亮的,试了好长时间没试出来,可否告知,谢谢

  4. 我在看你的vim文章 相见恨晚 还没有看完 在此先表示感谢

    thanks ! share u knowledge with the world :)

  5. 感谢楼主分享!
    有个问题请教:我也习惯在CONSOLE打开vim进行开发。但CONSOLE模式下,使用CTRL+P/CTRL+N自动补全功能确不能显示弹出菜单供选择。这个问题已经困扰了我几天,看你的CONSOLE抓图是可以。求解。谢谢!

  6. “刚开始使用vim或emacs的经历是很痛苦的,因为它们可能完成不同于你已经习惯的windows编辑器”
    瞥到一个错别字:“完成”应该是‘完全’把

    博主改了错字就把这条评论删掉好了,这种小事发email太费事,留了评论又占地方。 :)
    ps:谢谢你的教程,正在拜读。

    1. 如果已经了解了vim的基本操作,那么最好的是阅读vim的手册。通过阅读手册,找到最适合自己的操作方法,才是提高编辑效率的关键。

  7. (以下为CSDN评论的转帖)

    #muzuiget 发表于2007-02-16 01:00:49 IP: 218.20.217.*
    楼主写的不错,最近这2天都在研究vim,过程真的很痛苦,跟楼主所说,我以后做程序员,值得的。并开始用vim写C程序(我还是初学),安了个 mingw,编译一下,都是用命令的,很少动鼠标,比较有成就感哈哈。用vim做开发软件项目?楼主努力,继续发好文章,发些vim心得,比如vim如何调试程序?vc就比较好用,随时监视变量的值,不知道在vim怎样做。
    问一句菜问题,有文章说普通模式下按“8i=”能直接插入8个“=”,但是我输入“8”后,再按“i”就马上进入插入模式了,怎么回事?

    #easwy 发表于2007-02-16 09:06:02 IP: 213.70.90.*
    按”8i“后,确实会进入插入模式,接着输入”=“,然后再按”ESC“退出插入模式,这时你会看到已经插入了8个”=“
    ^_^

    #muzuiget 发表于2007-02-18 00:33:26 IP:
    果然,多谢指教

    #tedli 发表于2007-05-30 16:42:52 IP: 219.133.40.*
    楼主能不能共享一下你的.vimrc和你的plugin列表啊?
    我的邮箱是tedlwj@hotmail.com
    我的也配置了一下,可是怎么看都很乱啊。

    #easwy 发表于2007-05-31 10:27:46 IP: 213.70.90.*
    等我过几天整理一下发出来 ;)

    #jeensung 发表于2008-07-19 08:15:24 IP: 202.107.210.*
    非常感谢楼主能无私分享这种实战的经验,的确是对我们初学用vim 开发的人大有帮助。

    #loadingtime 发表于2008-10-25 21:09:43 IP: 124.205.76.*
    多谢楼主了~~看了楼主的文,受益匪浅
    更是为楼主的无私奉献的精神感动……

发表回复

您的电子邮箱地址不会被公开。 必填项已用*标注