【问题标题】:How to navigate multiple ctags matches in Vim?如何在 Vim 中导航多个 ctags 匹配项?
【发布时间】:2013-01-06 02:04:21
【问题描述】:

我在 Vim 中使用 Ctrl-] 来使用 Ctags 进行导航。 如果有多个匹配项,我如何导航到备用文件?

例如。 something.publish 在包含多次出现的publish 的代码库中:

class Foo
  def publish
  end
end

class Bar
  def publish
  end
end

【问题讨论】:

    标签: vim ctags exuberant-ctags


    【解决方案1】:

    使用g] 而不是C-] 来获取所有匹配项的列表。

    您可能想阅读:help g]

    【讨论】:

      【解决方案2】:

      :tn[ext] 转到下一个标签,:tp[revious] 转到前一个标签。 :ts[elect] 给你一个列表供你选择。

      :help tag-matchlist 以获得更多有趣和令人兴奋的东西来尝试!

      【讨论】:

        【解决方案3】:

        添加我最终寻找的答案,以防它帮助他人:

        g<C-]> 如果只有一个匹配项会跳转到标签,如果有多个匹配项会显示一个列表。

        我已将此映射添加到我的 .vimrc 以使其默认执行我想要的操作:

        nnoremap <C-]> g<C-]>

        【讨论】:

        • 非常酷..因为,它经常在vim 中发生..我实际上不小心按下了这个..并且想知道如何才能再次获得该功能:)
        【解决方案4】:

        ltag

        ltag the_tag_name
        lopen
        

        打开标签匹配的位置窗口。

        这对于正则表达式标签搜索特别强大:

        ltag /tag_na
        lopen
        

        这将列出所有包含字符串tag_na(因此包括the_tag_name)的标签。

        然后您可以在位置列表中进一步搜索,然后按回车键跳转到标签。

        要将它用于光标下的单词,您可能需要定义地图:

        nnoremap <leader>l exec("ltag ".expand("<cword>"))<CR>
        

        那么,如果你和我一样是标签狂:

        command! -nargs=1 Ltag silent ltag <args> | execute "normal \<C-o>" | tab lopen
        

        将打开一个包含位置列表和所有匹配项的新选项卡,而不是直接跳转到该选项卡:

        :Ltag /my_struct
        

        【讨论】:

          猜你喜欢
          • 2019-10-16
          • 2012-01-27
          • 1970-01-01
          • 2010-11-30
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 2011-10-19
          相关资源
          最近更新 更多