vim可以在tags之间跳转,适用于函数查看,定义跳转等场景。
有强大的工具可以生成vim需要的tags, 比如ctags。
//ctags生成c++ tags列表
以下设置可以加载tags所在路径。
:set tags+=/data/workplace/example/tags
查看tags路径
:set tags?
常见tag跳转操作:
:h tags 帮助文件 gf 跳转到指定文件,比如头文件 C-w f。 split窗口中打开光标处文件. //tag跳转 C-o jump to last (older) cursor position //跳转到上一光标, O代表Out C-i jump to next cursor position (after Ctrl-O) //跳转到下一光标, I代表In // C-] 跳转到第一个tag。 C-w ] 用split方式打开tag :ts [name] 列举所有与名称相关的tag, 选择跳往哪一个tag,以tag名字为参数,如果没有tag名字,则使用上一次使用的tag名字 :tn 继续跳往下一个tag, 同一个名称可能会由很多tag,如果不是满意的,继续跳转 :tp 继续跳转前一个tag :tj 和ts一样,如果只有一个tag,则直接跳转 g] 列出当前光标下的所有相关定义列表。和ts一样 //以下两个不太准确 gd 查看当前光标下的local declaration. gD 查看当前光标下的global declaration //和ts类似 [I 列出头文件中的所有定义 [i 列出头文件中的第一个定义 [n][<Tab> 跳转到第几个定义
当尝试使用上面的命令进行tag跳转的时候,tag会被压入tag栈,查看tag堆栈:
:tags
其中>符号指向的,就是当前tag
在tag堆栈种跳转的方法:
[n]C-t或者:[n]pop 。在当前指向tag,往前跳转n个 :[n]tag 。在当前指向tag基础上,往后跳转n个
发表回复