工欲善其事,必先利其器。一个强大的开发环境可以大大提高工作效率。好吧,我知道这是废话。。。不过,我想一定有很多跟我一样打算进入Linux平台开发的新手,一开始都为找不到一个像Windows下的VS那样可以一键安装并且功能几乎完美无缺的开发工具而郁闷不已,甚至打算收回刚刚迈出的脚步。所幸的是,通过几天努力,我总算配置出了一个功能完备的基于Vim的开发环境。这个开发环境除了基本的Vim外,还包括Ctags,Taglist,Cscope,SuperTab,OmniCppComplete,Winmanager,NERDTree和MiniBufExplorer等组件。
在开始操作前,先普及下基础概念,然后约定一下表达规范。
1)Vim存在多个配置文件vimrc,比如/etc/vimrc,此文件影响整个系统的Vim。还有~/.vimrc,此文件只影响本用户的Vim。而且~/.vimrc文件中的配置会覆盖/etc/vimrc中的配置。这里我们只修改~/.vimrc文件。
2)Vim的插件(plugin)安装在Vim的runtimepath目录下,你可以在Vim命令行下运行"set rtp“命令查看。这里我们选择安装在~/.vim目录,没有就创建一个。
3)当本文说”在Vim命令行下运行cmdxx命令“时,意思是指在Vim的命令行模式下运行cmdxx命令,即在Vim的正常模式下通过输入冒号":"进入命令行模式,然后紧接着输入命令cmdxx。在后文描述中都会省略冒号":"输入。
4)如果没有说明“在Vim命令行下运行某命令”,则是在shell中执行该命令。
5)如果命令中间被空白符间隔或有与正文容易混淆的字符,我会用双引号将命令与正文区分。所以读者在实际操作时,不要输入命令最前面和最后面引号。
6)本文关于组合快捷键的描述,形如a-b形式的快捷键表示同时按下a键和b键,而形如"a-b c"形式的快捷键,则表示先同时按下a键和b键,然后放开ab键,再按下c键。
1,安装使用Ctags
Ctags工具是用来遍历源代码文件生成tags文件,这些tags文件能被编辑器或其它工具用来快速查找定位源代码中的符号(tag/symbol),如变量名,函数名等。比如,tags文件就是Taglist和OmniCppComplete工作的基础。
这里介绍从源代码包安装,安装步骤跟大多数软件的从源代码安装步骤一样。
1)从http://ctags.sourceforge.net/下载源代码包后,解压缩生成源代码目录,
2)然后进入源代码根目录执行./configure,
3)然后执行make,
4)编译成功后执行make install。
5)在~/.vimrc中增加以下这行:
- map <C-F12> :!ctags -R --c++-kinds=+p --fields=+iaS --extra=+q .<CR>
到此,Ctags已安装成功。
使用Ctags的也很简单。 进入我们的项目代码根目录,执行以下命令:
- ctags -R --c++-kinds=+p --fields=+iaS --extra=+q .
另外,由于在前面第5条,我们已经在Vim中配置了Ctrl-F12组合快捷键,所以我们也可以进入代码根目录后,打开Vim,按下Ctrl-F12快捷键自动生成tags文件。
命令执行完后,会在源代码目录生成tags文件。Vim默认会自动读取当前目录下的tags文件,所以不需要修改~/.vimrc文件。此时,我们已经具有定义跳转的功能了。有两组快捷键是最常用的。
Ctrl-] 跳转到光标所在符号的定义。
Ctrl-t 回到上次跳转前的位置。
更多功能通过命令man ctags或在Vim命令行下运行help ctags查询。
2,安装使用Taglist
Taglist是vim的一个插件,提供源代码符号的结构化视图。
1)从http://www.vim.org/scripts/script.php?script_id=273下载安装包,也可以从http://vim-taglist.sourceforge.net/index.html下载。
2)进入~/.vim目录,将Taglist安装包解压,解压后会在~/.vim目录中生成几个新子目录,如plugin和doc(安装其它插件时,可能还会新建autoload等其它目录)。
3)进入~/.vim/doc目录,在Vim下运行"helptags ."命令。此步骤是将doc下的帮助文档加入到Vim的帮助主题中,这样我们就可以通过在Vim中运行“help taglist.txt”查看taglist帮助。
4)打开配置文件~/.vimrc,加入以下两行:
- let Tlist_Show_One_File=1
- let Tlist_Exit_OnlyWindow=1
到此安装已经完成。
在Vim命令行下运行TlistToggle命令就可以打开Taglist窗口,再次运行TlistToggle则关闭。示图如下:
我们可以通过Ctrl-w快捷键或鼠标点击在Taglist窗口和编辑区之间切换焦点,在Taglist窗口用鼠标或键盘选择某个符号,然后点击或回车,就可以跳转到该符号定义的位置。
更多功能可通过在Vim命令行下运行help taglist.txt查询。
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_maps.vim,无法下载)
到这里,我们就可以开始使用Cscope了。
1)使用Cscope需要生成cscope数据库文件。进入项目代码根目录运行命令:
- cscope -Rbq -f xxx.out
命令运行后会生成xxx.out文件,即cscope数据库文件。更多用法参考man cscope文档。
2)进入项目代码根目录,在Vim下运行命令:
- cs add xxx.out
此命令将cscope数据库载入Vim。
3)Cscope常用快捷键
Ctrl-\ s 查找所有当前光标所在符号出现过位置。
Ctrl-\ c 查找所有调用当前光标所在函数的函数。
按下快捷键查找结束后会在编辑区下方出现查找结果的列表,输入结果编号并回车,就能跳转到该查找结果在源代码中的相应位置。例如,我们将光标移到initial_pool_size变量定义的位置,即17行,然后按下"Ctrl-\ s"组合快捷键,得到示图如下:
然后我们输入2,并回车,就能跳转到第2个查找结果。
为了界面更好看,可以把Cscope的查找结果输出到quickfix窗口,需要在~/.vimrc中加入下面这行:
- set cscopequickfix=s-,c-,d-,i-,t-,e-
更多功能可通过命令man cscope或在Vim命令行下运行help cscope查询。
4,安装使用OmniCppComplete
OmniCppComplete主要提供输入时实时提供类或结构体的属性或方法的提示和补全。跟Talist一样,OmniCppComplete也是一个Vim插件,同样依赖与Ctags工具生成的tags文件。安装步骤跟Taglist类似。
从http://www.vim.org/scripts/script.php?script_id=1520下载安装包后。
1)进入~/.vim目录,将安装版解压缩
2)进入~/.vim/doc目录,在Vim命令行下运行"helptags .”
3)在~/.vimrc中加入以下几行:
- set nocp
- filetype plugin on
OmniCppComplete的使用几乎跟VS下的VA一样。如下图所示,输入m0.之后立即弹出my_class类中所有的函数列表,然后用上下键选择合适的函数。
更多功能通过在Vim命令行下运行"help omnicppcomplete"查询。
7,其它有用的~/.vimrc设置
设置配色方案,我用的是eveing方案,配色方案保存在/usr/share/vim/vimXY/colors
- colo evening
- set nu
- set autoindent
- set tabstop=4
- set shiftwidth=4
- p; set mouse=a