vim中的标签导航

vim中的标签导航,vim,ctags,cscope,exuberant-ctags,Vim,Ctags,Cscope,Exuberant Ctags,使用cscope集成的Vim,我可以使用ctrl-T导航回来,并使用:tags查看当前标记堆栈的位置。但我如何在堆栈中前进?从手册页中我唯一能找到的就是转到函数定义(如ctrl-])您还可以使用ctrl+I和ctrl+O分别在跳转列表中向前和向后移动。这适用于标记命令,因为它们计为跳跃运动 因此: 跳转到标记:Ctrl+] 跳回:Ctrl+O 再次跳转到标记:Ctrl+I 标记堆栈由所有“跳转到定义”创建。每次执行,跳转到的标记都会添加到标记堆栈中,您可以使用或:pop跳回标记堆栈中的上一个标

使用cscope集成的Vim,我可以使用ctrl-T导航回来,并使用:tags查看当前标记堆栈的位置。但我如何在堆栈中前进?从手册页中我唯一能找到的就是转到函数定义(如ctrl-])

您还可以使用ctrl+I和ctrl+O分别在跳转列表中向前和向后移动。这适用于标记命令,因为它们计为跳跃运动

因此:

  • 跳转到标记:Ctrl+]
  • 跳回:Ctrl+O
  • 再次跳转到标记:Ctrl+I

标记堆栈由所有“跳转到定义”创建。每次执行
,跳转到的标记都会添加到标记堆栈中,您可以使用
:pop
跳回标记堆栈中的上一个标记,或使用
:tag
跳转到另一个方向。
:tag
:pop
都进行可选计数,因此
:5pop
将转到上一个标记的第五个


请参见
:help tagstack

仅添加此答案,因为我没有代表对接受的答案进行编辑或评论,但
实际上对应于
:pop
命令,而不是前面所述的
:tag
命令

:pop
用于在标记堆栈中“向后”移动(将产生“在标记堆栈底部”消息),并且是具有默认键绑定的命令

:tag
用于在标记堆栈中“向前”移动(将产生“位于标记堆栈顶部”消息)

我不知道:tag有任何键绑定,比如向后移动,所以我已经映射(没有)到tag


nnoremap:tag

在跳转列表中工作(标记列表作为副作用)。但它们并不是完全的标签导航。@Kent我并没有把CTAG当作垃圾。我正在使用CTAG。所以:ta不是wirkingI,我已经编辑了接受的答案。真没想到它被留下这么久!