红联Linux门户
Linux帮助

踏平Linux开发第一道门槛-将Vim改造为强大的IDE

发布时间:2014-12-19 15:06:10来源:linux网站作者:bokee

工欲善其事,必先利其器。一个强大的开发环境可以大大提高工作效率。好吧,我知道这是废话。不过,我想一定有很多跟我一样打算进入Linux平台开发的新手,一开始都为找不到一个像Windows下的VS那样可以一键安装并且功能几乎完美无缺的开发工具而郁闷不已,甚至打算放弃可爱的Linux。所幸的是,通过几天努力,我总算配置出了一个还算过的去的基于Vim的开发环境。这个开发环境除了基本的Vim外,包括Ctags,Taglist,Cscope,SuperTab,OmniCppComplete,Winmanager,NERDTree和MiniBufExplorer等组件。


1,安装使用Ctags

Ctags遍历源代码文件生成tags文件,这些tags文件能被编辑器或其它工具用来快速查找定位源代码中的符号(tag)。比如,tags文件就是Taglist和OmniCppComplete工作的基础。

这里介绍从源代码包安装,安装步骤跟大多数软件的从源代码安装步骤一样。

1)从http://ctags.sourceforge.net/下载源代码包后,解压缩生成源代码目录,

2)然后进入源代码根目录执行./configure,

3)然后执行make,

4)编译成功后执行make install。

到此,Ctags已安装成功。

使用Ctags的也很简单。进入我们的项目代码根目录,执行以下命令:

ctags -R --c++-kinds=+p --fields=+iaS --extra=+q .

各个选项意义可参考man ctags帮助文档(其实上面命令的这么多选项主要是为OmniCppComplete插件做准备)。命令执行后,会在源代码目录生成tags文件。Vim默认会读取当前目录下的tags文件,所以不需要修改~/.vimrc进行配置。此时,我们已经具有定义跳转的功能了。有两组快捷键是最常用的。

1)Ctrl-]    跳转到光标所在tag的定义。

2)Ctrl-t    回到上次跳转前的位置。


2,安装使用Taglist

Taglist是vim的一个插件,提供源代码符号的结构化视图。

插件的安装位置有多个可以选择,这里我们选择安装到~/.vim目录,没有就自己新建一个。

1)从http://www.vim.org/scripts/script.php?script_id=273下载安装包。

2)进入~/.vim目录,将Taglist安装包解压,解压后会在~/.vim目录中生成几个新子目录,如plugin和doc(安装其它插件时,可能还会新建autoload等其它目录)。

3)进入~/.vim/doc目录,在Vim下运行"helptags ."命令。此步骤是将doc下的帮助文档加入到Vim的帮助主题中,这样我们就可以通过在Vim中运行“help taglist”查看taglist帮助。

4)打开配置文件~/.vimrc,加入以下两行:

let Tlist_Show_One_File=1

let Tlist_Exit_OnlyWindow=1

更多选项可通过在Vim运行help taglist查看。

到此安装已经完成。

在Vim下运行TlistToggle就可以打开Taglist窗口,再运行一次TlistToggle则关闭。我的Taglist如下:

我们可以通过Ctrl-w快捷键在Taglist窗口和编辑区切换,在Taglist窗口选择


3,安装使用Cscope

Cscope提供交互式查询语言符号功能,如查询哪些地方使用某个变量或调用某个函数。

Cscope已经是Vim的标准特性,默认都有支持,官方网址为http://cscope.sourceforge.net/。

1)在Vim下运行version查看Vim支持哪些特性,前面有前缀符号+的为支持。如果支持Cscope,则直接进入2),否则下载Cscope源代码包编译安装。步骤同Ctags安装。

2)确定Vim已支持Cscope后,将文件http://cscope.sourceforge.net/cscope_maps.vim下载到~/.vim/plugin目录。

到这里,我们就可以开始使用Cscope了。

1)使用Cscope需要生成cscope数据库文件。进入项目代码根目录运行命令:

cscope -Rbq -f path/xxx.out

命令运行后会生成xxx.out文件,即cscope数据库文件。更多用法参考man cscope文档。

2)进入项目代码根目录,在Vim下运行命令:

cs add path/xxx.out

此命令将cscope数据库载入Vim。