意图

  • 用ctags搜索代码时, 用 ctrl + ]跳转直接跳到第三个匹配行的题材。
    后,唯有八个匹配项一向跳转,有多个则列出具有匹配项采用跳转

意图

  • 用ctags搜索代码时, 用 ctrl + ]
    后,唯有三个相当项从来跳转,有多少个则列出装有匹配项选用跳转

意图

  • 用ctags搜索代码时, 用 ctrl + ]
    后,唯有贰个匹配项一贯跳转,有多少个则列出具有匹配项选用跳转

1. 概述

诚如的话,在代码中跳转,离不开 ctags。

骨子里,vim 中代码跳转是由 vim tags 模块形成的,tags 模块重视于 tags
文件。

ctags(Generate tag files for source code) 是产生 tags 文件的。

tags 文件只含有了函数、类、变量的概念的新闻,而没有蕴涵使用新闻。

设若要精晓一个函数都在怎样地方选用过,需求使用 cscope。

问题

  • 在 vim 中采纳 ctags
    是1个很令人心潮澎湃的工作,但偶尔一些默许的安排和不知来由的难点造成在行使
    ctags 时很烦躁,如:

  • 在用ctags搜索代码时, 用 ctrl + ] , 缺省景况下,
    vim会把你带到第三个极度的地点, 有时候这一个不是您想要的,
    那应该怎么跳到别的地点吧?

问题

  • 在 vim 中应用 ctags
    是多个很令人舒心的工作,但神跡一些私下认可的布局和不知来由的标题造成在接纳ctags 时很烦恼,如:

  • 在用ctags搜索代码时, 用 ctrl + ] , 缺省景观下,
    vim会把你带到首个至极的地点, 有时候这么些不是您想要的,
    那应该怎么跳到别的地点吗?

问题

  • 在 vim 中采用 ctags
    是二个很令人舒服的工作,但偶尔一些默许的配置和不知来由的题材造成在利用
    ctags 时很干扰,如:

  • 在用ctags搜索代码时, 用 ctrl + ] , 缺省气象下,
    vim会把您带到第二个相当的地方, 有时候这几个不是您想要的,
    那应该怎么跳到其他地点吧?

2. tags 文本的变化与更新

ctags 暗许是不会自动生成 ctags 文件的,常用的 3 个转移命令如下:

$ ctags *
$ ctags -R
$ ctags -R --c++-kinds=+p --fields=+iaS --extra=+q .
  • -中华V: 循环生成子目录的 tags
  • *: 当前目录下的享有文件,不递归
  • –c++-kinds=+px : 记录 c++ 文件中的函数评释和各类外部和前向注脚
  • –田野(field)s=+iaS : ctags
    供给讲述的音信,当中i表示假若有持续,则标识出父类;a
    表示一旦成分是类成员来说,要评释其调用权力(便是 public 依旧private);S 表示如若是函数,则标识函数的 signature。
  • –extra=+q:
    强制供给ctags做如下操作—假使有个别语法成分是类的多个分子,ctags暗中同意会给其记录一行,能够须要ctags对同二个语法成分再记一行,那样能够确定保障在VIM中四个同名函数能够通过路径分歧来区分。

缓解方案

  1. 使用 :ts 命令
  2. 在 .vimrc 中丰硕以下配置:map <c-]> g<c-]>

消除方案

  1. 使用 :ts 命令
  2. 在 .vimrc 中增进以下配置:map <c-]> g<c-]>

消除方案

  1. 使用 :ts 命令
  2. 在 .vimrc 中添加以下配置:map <c-]> g<c-]>

http://vimcdoc.sourceforge.net/doc/tagsrch.html\#tag-matchlist

3. 大面积作用与急忙键

详细的注明,见 vim 的 tags 帮衬文书档案。

:help tags

命令、快捷键、功用描述如下:

  • CTRL+]        :tag tagname     跳转到定义处
  • CTRL-W ]     :stag tagname    新窗口中打开并跳转到定义处。split
    后进行  tag tagname
  • CTRL+T                               CTRL+]
    的反操作,向回跳转。类似 CTLacrosseL+o,分化在于,CT奇骏L+o 的跳转不囿于于
    CT卡宴L+] 构成的调用树。

对于存在三个非凡的 tag(如, 在 .h 和  .cpp 中都申明只怕定义的章程名):

  • :ts[elect]                 列出全体匹配的 tag
  • :[count]tp[revious]  跳转至前 count 个 tag 处。
  • :[澳门金沙国际 ,count]tn[ext]        跳转至后 count 个 tag 处。

4. Vim + ctags 配置

set tags=tags;  " ; 不可省略,表示若当前目录中不存在tags, 则在父目录中寻找。
map <C-F12> :!ctags -R --c++-kinds=+p --fields=+iaS --extra=+q .<CR> 

相关文章