ctags 的简单使用
萧英光
2023-12-01
1、首先查看 ctags的安装版本
$ctags --version
Exuberant Ctags 5.8, Copyright (C) 1996-2009 Darren Hiebert
Compiled: Mar 7 2014, 18:05:06
Addresses: <dhiebert@users.sourceforge.net>, http://ctags.sourceforge.net
Optional compiled features: +wildcards, +regex
2、如果没有安装
a)输入命令
$sudo apt-get install ctags
b)或者下载安装包,ctags-5.8.tar.gz
$tar zxvf ctargs-5.8.tar.gz -C ./
$cd ctags-5.8/
$./configure
$make
$sudo make install
3、建立tags,以 linux kernel 为例子:
$cd kernel
$ctags -R *
可以在目录中看到生成了 tags 这个文件
$vi ~/.vimrc
在 .vimrc 文件中添加
set tags=/home/andrew/kernel/tags
4、常用命令
这个时候可以使用下面命令
ctrl+] 跳转
ctrl+T 返回
ctrl+o
返回源文件
vi -t start_kernel 可以直接打开有 start_kerenl 的文件
如果有多个
$ts(tagselect)
列出所有 tags,让用户选择
# pri kind tag 文件
1 F C f start_kernel arch/alpha/boot/bootp.c
start_kernel(void)
2 F f start_kernel arch/alpha/boot/bootpz.c
start_kernel(void)
> 3 F f start_kernel arch/alpha/boot/main.c
void start_kernel(void)
4 F f start_kernel init/main.c
asmlinkage void __init start_kernel(void)
可以输入 3 进行选择
tn(tagnext)
打开下一个 tag
tp(tagprevious)
打开上一个 tag
tf(tagfirst)
打开第一个 tag
tl(taglast)
打开最后一个 tag
ta
直接跳转到第一个 tag 处
tj
如果只有一个,则直接跳到 tag 处,否则让用户选择
ctags 只能查找符号的定义,并不能实现 source Insight 中的 Jump to caller 功能.但是使用 cscope 插件,可以完善这一功能。