Source Insight 是一款 Windows 系统下的强大编辑器,适合代码阅读和管理,具有查找函数、变量、宏定义,查找其引用位置和调用位置,以及查找符号在项目内的所有匹配等功能。而 Linux 系统更倾向于使用专注于单一功能的工具,因此 Vim 成为 Linux 下的优秀编辑器。本文将指导如何在 Ubuntu 上安装 Vim 插件,将 Vim 打造成和 Source Insight 类似的强大工具。
在 Ubuntu 12.04 LTS 环境下,使用 Vim 版本 7.3。首先需要安装 ctags 插件,用于查找函数、变量和宏定义。在终端中执行以下命令:
sudo apt-get install exuberant-ctag
在项目目录下运行 ctags -R 命令生成 tags 文件,该文件包含所有源文件的符号信息。在 Vim 中,按下 Ctrl+] 可以跳到当前函数的定义处。为了方便生成 tags,将以下内容添加到 ~/.vimrc:
nnoremap F5 :ctags -R --c++-kinds=+p --fields=+iaS --extra=+q .
nnoremap 表示在普通模式下映射按键 F5。--c++-kinds=+p 为标签添加函数原型信息;--fields=+iaS 添加继承信息、访问控制信息和函数特征;--extra=+q 为类成员标签添加类标识。如果项目多层目录,一般在根目录生成一个 tags 文件,但子目录可能无法访问此文件。解决方法是在 .vimrc 中将 tags 添加到查找路径中,针对每个项目设置。例如:
"project1"
set tags+=/project1/tags
ctags 的快捷键包括:
Ctrl+]:切换到定义处
g+Ctrl+]:当有多个匹配时列出匹配标签列表供选择
count+Ctrl+t:后退 count 个标签
count+tag:前进 count 个标签
ts:列出匹配标签列表,存在多个匹配时
tn:跳到下一处匹配标签
tp:跳到上一处匹配标签
tf:跳到第一个匹配标签
tl:跳到最后一个匹配标签
set tags?:查看 tags 文件路径
为了将 Vim 功能提升到与 Source Insight 类似的水平,还需要借助于 cscope。cscope 可以实现函数调用查找、符号引用查找等高级功能,通过以下命令在当前源文件目录下生成数据库:
cscope–Rbq
其中,-R 表示递归处理子层目录;-b 表示生成数据库后自动退出;-q 表示生成 cscope.in.out 和 cscope.po.out 文件以加快索引速度。在 Vim 中打开源文件后,将 cscope 数据库添加到当前环境中:
csadd cscope.out
- 随机文章