ctags的功能:扫描指定的源文件,找出其中所包含的语法元素,并将找到的相关内容记录下来。
ctags --list-languages
ctags --list-maps
ctags --list-kinds
单独查看可以识别的C++的语法元素:
[chuxing@hostname ~]$ ctags --list-kinds=c++
c classes
d macro definitions
e enumerators (values inside an enumeration)
f function definitions
g enumeration names
l local variables [off]
m class, struct, and union members
n namespaces
p function prototypes [off]
s structure names
t typedefs
u union names
v variable definitions
x external and forward variable declarations [off]
ctags -R *
缺点很明显,tags会非常大,tags生成会非常慢,而且代码跳转会卡顿。
ctags `find -name "*.h"`
tag
命令用于跳转到指定的tag。例如:
tag tagname
使用这个命令可以跳转到tagname
的定义处,即使它在另一个文件中。
Ctrl+]
取出当前光标下的word作为tag的名字并进行跳转。
tags
命令列出曾经访问过的tag的列表
Ctrl+T
跳转到前一次的tag处。
stag
命令stag tagname
分割当前窗口,并且跳转到指定的tag。
Ctrl+W+]
分割当前窗口,并且跳转到光标下的tag。
如果存在多个同名的tag,tag命令会给出一个tag的列表,可以通过键入tag的序号来选择tag;也可以通过tselect
来过滤tag,如::tselect tagname
如果要在多个tag间移动,可以使用如下命令:
:tfirst go to first match
:[count]tprevious go to [count] previous match
:[count]tnext go to [count] next match
:tlast go to last match
如果没有指定[count]
,默认是1。
tags
选项来引入更多的tags文件。例如: :set tags=./tags, ./../tags, ./*/tags
tag
命令时,可以输入部分tag名,然后使用Tab
键进行补全。参考来源:
1. https://blog.csdn.net/u011729865/article/details/75452867
2. https://blog.csdn.net/gangyanliang/article/details/6889860