阅读c++代码中,我门在linux上直接vim打开,简单的搜索"/<symbl>"搜索关键词。这个搜索出来的类似有Find查找。但其实在c++代码中有个更高级的功能-符号解析器。这类似我们在IDE上使用的那些快捷查找指令“符号的定义”,“符号的声明”,“符号的调用者”。
首先我们需要先按照cscope工具,苹果OSX系统使用brew install cscope安装,ubuntu系统使用apt get install scope,centos系统使用yum install cscope。
接着我们进入到c++工程目录,执行cscope -b -c -R, 这时候cscope会去解析符号以及他们之前的联系,会生成一个cscope.out代码符号文件。这个小型数据库文件保存着符号表已经他们的关系。
-R:递归解析子目录。
-b: 构建交叉引用(cross-reference)文件之后,而不会进入命令的交互使用界面
-c:符号仅限于ascii字符
这时候我们在使用vim的时候,就可以加载这个符号数据库。通过命令:cs add ./cscope.out加载工程项目符号索引数据库。
然后可以通过以下使用用法: cs[cope] find a|c|d|e|f|g|i|s|t name
比如常用的有(选项c)查找调用此函数的地方,(选项d)查找此函数调用的地方,(选项g)查找函数定义。
但是注意有几个事情cscope不能实现。
cscope生成的cscope.out数据库是包含当前目录的所有符号,他不能限定查找范围为某个子目录,这个像vscode之类的IDE是有这个功能。

另外像出现几个符号的选择,我们会进一步选择去第几个符号,但是跳转过去就不能跳回原菜单。这一点也没有IDE方便。
但是这不妨碍cscope,因为它轻便,无需桌面环境,且比文本搜索工具更能准确地查找符号,很适合在服务上使用vim阅读代码。