使用vim阅读代码
环境
- Ubuntu22.04
- VIM - Vi IMproved 8.2 (2019 Dec 12, 编译于 May 03 2024 02:37:51)
引言
在Linux
环境下,Source Insight
只能在Wine环境下运行,显得并没有那么好用,于是便有了本文,使用Vim+Ctags+Cscope
来进行阅读代码。
安装
安装Ctags
打开终端,运行以下命令安装 ctags
:
sudo apt install exuberant-ctags |
如果你希望使用 universal-ctags
(这是一个更新和维护更积极的分支),则可以安装它:
sudo apt install universal-ctags |
安装Cscope
sudo apt install cscope |
配置与使用
配置Ctags
在项目根目录执行如下命令生成tags
文件:
ctags -R . |
可以发现在项目根目录下多了如下文件:
❯ ls tags |
为了能够在项目中使用该文件作为tag
索引,则在~/.vimrc
中增加如下配置,这个配置的目的是为了能够让vim
在项目的任意目录中都能够找到tags
的配置:
set tags=./tags;/ |
使用Ctags
ctrl+t
:在跳转之后,按下ctrl+t,vim就会返回之前的跳转位置ctrl+]
:将光标移动到函数或变量名上,按下ctrl+],vim会自动跳转到该函数或者变量的定义处ctrl + w + ctrl + ]
: 将光标移动到函数或变量名上,按下快捷键,vim会自动跳转到该函数或者变量的定义处并垂直拆分标签页ctrl +w +w
: 在刚才垂直拆分的标签页中来回跳转光标ctrl + w + c
: 关闭一个垂直拆分的标签页:tags
: 输入:tags, vim会显示所有可跳转的列表
配置Cscope
在项目根目录执行如下命令生成tags
文件:
cscope -Rbq |
可以发现在项目根目录下多了如下文件:
❯ ls cscope* |
为了能够在项目中使用这些文件作为索引,则在下载cscope
的官方配置文件:
wget -O ~/.cscope_maps.vim https://cscope.sourceforge.net/cscope_maps.vim |
并且在.vimrc
中增加配置:
source ~/.cscope_maps.vim |
使用Cscope
在vim
中光标放到一个symbol
上,随后使用vim
中配置的快捷键(details: ~/.cscope_maps.vim)。
- a: 查找一个符合被赋值(assigned)的地方
- c: 查找调用(call)这个函数的函数
- d: 查找被这个函数调用(called)的函数
- e: 使用(egrep)搜索进行查找
- f: 按照文件(file)名查找
- g: 查找一个符合的全局(global)定义
- i: 查找包含(include)这个文件的文件
- s: 查找一个符合(symbol)的引用
- t: 查找这个文本(text)字符串的所有出现位置
e.g.: ctrl + \ + c
: 搜索光标处的symbol
在工程中被谁调用了。
创建脚本
为了每次创建cscope
和ctag
索引的方便快捷性,可以在/usr/local/bin
目录下创建一个名为ctcs
的脚本,脚本内容如下:
|
随后使用如下命令赋予执行权限:
chmod +x /usr/local/bin/ctcs |
Ref
https://cscope.sourceforge.net/cscope_maps.vim
https://stackoverflow.com/questions/563616/vim-and-ctags-tips-and-tricks
https://bigeast.github.io/Source_Code_Tree_Navigation_in_Vim.html
https://segmentfault.com/a/1190000044591252
https://blog.csdn.net/zg_hover/article/details/78917921