在Linux系统下进行开发的时间零零散散算起来也有将近一年半了,刚开始的时候用的最原始的VIM进行简单的代码编辑,那段时间让我熟练了VIM的命令、编辑模式切换,方向移动和命令模式下的常用命令,第一次认识到了VIM的强大。之后参与的项目开发,虽说使用的是Linux系统,但是应用代码的主要编辑工作是在Source Insight下完成的,VIM用的也就少,慢慢地用起来有点手生。但是内心对于VIM的那种简洁、直接和高效依然恋恋不舍,常常会温习VIM的命令和技巧,一直在找机会掌握VIM进行完成的项目开发。直到这个项目,环境、机会(天时、地利、人和)俱全,我进入了状态~~
一、使用VIM进行项目开发之前的基础
- Linux系统中shell基本命令、常用命令的熟练使用
- Linux系统文件系统知识、概念的基本理解
- 能够使用VIM完成基本的文本编辑工作,熟悉三种模式和基本命令
现在的Linux发行版基本都已经装好了VIM,如果没有,那就需要自己进行安装,最好是VIM7.0以上版本,不过大多数发行版的源默认都是最新版本,除非是自己使用源码按照,就需要注意。
二、VIM的配置文件及推荐插件
VIM的配置文件:.vimrc,一般都是在用户的home主目录下,该文件决定了VIM启动时的基本环境和可使用命令、工具等,在VIM的使用中具有举足轻重的地位。网络上有很多大能的.vimrc文件提供参考、下载,大都非常地复杂,强大,而且与系统环境和其使用的插件高度关联,因此在下载他们的文件使用时,最好是确保环境一致,否则很多功能会使用不了,偶尔还可能会出一点莫名其妙的问题。在稍后的文章中我会贴出本人稍显粗糙的.vimrc。
VIM的强大在于它的高度可定制性,你完全可以将它打造成属于你个人的编辑器或者说IDE,这是通过大量的插件和.vimrc配置文件协同实现的。在VIM的官网上你能找到各种插件,如果没找到你需要的,你还可以直接开发插件,然后提供给他人使用。本人还没到这个水平,在这推荐几款常用的插件给大家:
- buffexplorer插件:用来进行缓冲区的浏览和切换,多文件编辑不可缺少的工具
- taglist插件:用来查看代码中的变量、宏、函数等单元,并进行定位、切换,开发必不可少
- lookupfile插件:用来在当前目录环境中查找文件、缓冲区等,并进行切换,五星级插件
- genutils插件: 使用lookupfile插件需要用到的通用函数插件
- NERD_Tree插件:用来在VIM中显示指定目录的目录树并进行切换,类似windows资源管理器中的目录树效果,对于在整个文件系统中查找文件很实用
这些插件在VIM官网上都能找到,下载最新版本就可以,然后就是插件的安装了。VIM在用户的主目录下需要一个运行时目录:.vim/,如果没有就手动创建,之后把下载的插件全部解压到.vim/目录里面,就完成了插件的安装。这个时候在.vim/目录下至少会有两个目录:doc/ 和 plugin/,doc目录存放各插件的帮助文档,plugin目录存放各插件的功能实现vim 脚本。但是对于lookupfile插件,正确安装的话,在.vim/下还应该有一个autoload/目录,里面存放有lookupfile 和genutils插件的autoload版本vim脚本,它们定义了plugin/目录中lookupfile和genutils脚本使用的一些函数。如果没有autoload目录,lookupfile插件将无法使用,会提示类似错误:“E117:Unknown Function lookupfile#OpenWindow(...)"。因此如果你安装完毕后,发现没有autoload目录,你需要手动创建该目录,然后将lookupfile插件和genutils插件包中的autoload版本vim脚本拷贝进去。
插件帮助文档的生成:使用vim时,必须要掌握的技能之一就是熟练使用vim的在线帮助文档,在里面能找到你所需要的一切,但你要知道你想知道的东西是什么。上述的各个插件都有完善的帮助文档,但需要将它们添加进vim的在线帮助系统中,以方便查找。这一步很简单:
- 切换到vim运行时目录然后打开vim:cd ~/.vim ; vim
- 在命令模式下输入如下命令: :helptags doc
敲回车执行命令之后就OK了,现在可以查看一下lookupfile的帮助: :help lookupfile.
配置好.vimrc文件后,到此为止VIM自身的环境就准备完毕了,接下来就是外部辅助开发环境。
三、VIM外部辅助开发环境:VIM+Ctags+Cscope
单独VIM一个工具总是不够的,UNIX中的哲学是每一个工具专一地完成一件小事,多个工具的联合完成一件大事,从而用有限的工具实现无限的可能。VIM主要是把编辑这一件事实现到极致,通过插件提供一些额外的便利增强编辑,但对于代码的结构化、数据库化管理显然超出了VIM的功能范畴,需要更专一的工具来完成,这就是Ctags 和 Cscope工具。
ctags工具提取代码文件中的所有tag,包括全局变量、宏、函数、数据类型等,记录这些tag在文件中的位置和交叉引用,以提供在代码中进行这些tag之间的跳转,方便追本溯源。
cscope工具也是提取代码文件中的所有tag,但是它记录的数据更详细,通过扫描tag在文件中的使用,建立一个数据库,从而提供查找定义、函数调用及被调用、文本、头文件等更复杂强大的搜索功能。
进行项目开发时,这两个工具几乎不可缺少,VIM+Ctags+Cscope一般也是项目开发的整体环境(本人现在的开发环境),这个环境已经可以完成一个IDE的开发必备工作了。关于ctags和cscope工具的下载、安装就不在此详述了,安装好以后,可以通过以下的命令查看对应的帮助手册:
<!-- lang: shell -->
man ctags
man cscope
在之后的文章中我会写一个使用这两个工具的shell脚本,以进行项目开发过程中的管理和更新。
来源:oschina
链接:https://my.oschina.net/u/195885/blog/107709