tags

ctags

# 安装
sudo apt install universal-ctags

# 查看版本
ctags --version

# 当前目录生成tags
ctags -R .

# 指定具体文件生成tags
ctags filename.c filename1.c file.h

# 指定类型生成tags
find -name *.h | xargs ctags -a

# .vimrc设置
set tags=tags;
set autochdir

# 跳转符号
vi -t WinMain

# 快捷键:
Ctrl + T	"返回原来的文件
Ctrl + O	"返回之前的位置
Ctrl + ]	"跳至下一个标签
Ctrl + W + ]	"分割窗口跳转

# 其它常用命令
:tag {ident}    "跳转到ident标签位置上
:tags    "显示标签栈
g] 列出变量的所有引用供用户选择
:ts    "显示找到的所有标签
:tp    "显示上一个标签
:tn    "显示下一个标签

cscope

# 安装
sudo apt install cscope

# 生成索引
cscope -Rbq

# cscope参数
-R: 在生成索引文件时,搜索子目录树中的代码
-b: 只生成索引文件,不进入cscope的界面
-d: 只调出cscope gui界面,不跟新cscope.out
-k: 在生成索引文件时,不搜索/usr/include目录
-q: 生成cscope.in.out和cscope.po.out文件,加快cscope的索引速度
-i: 如果保存文件列表的文件名不是cscope.files时,需要加此选项告诉cscope到哪儿去找源文件列表。可以使用"-",表示由标准输入获得文件列表。
-I dir: 在-I选项指出的目录中查找头文件
-u: 扫描所有文件,重新生成交叉索引文件
-C: 在搜索时忽略大小写
-P path: 在以相对路径表示的文件前加上的path,这样,你不用切换到你数据库文件所在的目录也可以使用它了。    

# :cs find s/g/d/c/t/e/f ...
0或s:查找这个(指name参数,下同)C符号。
1或g:查找这个定义。
2或d:查找被这个函数调用的函数。
3或c:查找调用该函数的函数。
4或t:查找这个文本字符串。
6或e: 查找这个egrep的pattern。
7或f:查找这个文件。
8或i:查找#include了这个文件的所有文件。
 

gtags

# 安装
sudo apt install global

# 生成索引文件
find . -type f -print > gtags.files
gtags –v

# 查找定义
global AActor

# 查看详细
global -x AActor

# 查找引用
global -r AActor

# POSIX 正则表达式
global 'A[1-3]'

# 查找指定匹配行
global -xg '#ifdef'

# 符号补全搜索
global -c A

emacs中使用gtags

# 安装gtags.el,.emacs 或是 .emacs.d/init.el 中加入
(add-to-list 'load-path "/usr/share/emacs/site-lisp/global/gtags.el")
(setq gtags-suggested-key-mapping t)

# 快捷键
C-c v,告诉Emacs项目的根目录,即到哪里去找GTAGS等文件。这一步不要跳过,否则你查找符号时Emacs会问你去哪里查找tags。
M-.,跳转到符号定义。
C-t,返回。
C-c g,在代码中用grep查找符号。
C-c s, 搜索某个符号。
C-c r, 看一个函数在哪些地方被引用。
posted @ 2023-03-16 23:20  BuzzWeek  阅读(214)  评论(0编辑  收藏  举报