试着去vim中定义类/函数

时间:2010-02-22 20:40:59

标签: vim tags definition

我已经安装了vim 7.2和ctags 5.8并使用“ctags -R / foopath”创建了标签文件。

我有在几个类中使用相同名称调用的许多方法,所以如果我将光标放在函数调用中并执行“:tag”,它会显示 first < / em>列出的标签。如果我执行“:tn”几次,我终于找到了方法..

所以我的问题是:有没有办法直接显示 路径,哪个类包含我正在调用的正确方法?

2 个答案:

答案 0 :(得分:3)

:tselect tagname会为您提供匹配代码的列表,您可以输入所需代码的编号。

:stselect tagname会先拆分窗口。

您也可以将光标放在单词上,然后输入g]以获取与该单词匹配的标签列表。

<CTRL-W>]将拆分窗口并转到与光标下的单词匹配的第一个标记。

<CTRL-W>g]将拆分窗口,并为您提供匹配列表。

答案 1 :(得分:0)

您可以使用taglist()将标签中的原始数据读入缓冲区。然后,您可以在缓冲区中搜索您感兴趣的其他条件,包括类名和文件目录的部分。

为了更精确地搜索“mytag”,请尝试:

:new | put =taglist(\"^mytag$\")

要获取最多信息,请务必使用Exuberant Ctags

搜索到您想要的数据后,您会看到与前缀为 '文件名'的标记相关联的文件名: 以及带有前缀<的行文字强> '加利福尼亚':

将它放在一个带有一些代码的函数中,以便美化并正确处理缓冲区:

" List information about matching tags in a buffer
function! BrowseTags(tagStr)
  new [Tag Brower]
  setlocal buftype=nofile bufhidden=wipe nobuflisted noswapfile nowrap

  put =taglist(a:tagStr)

  " Beautify it a little
  normal 1G
  while search('^{', 'W')
    call setline(".", split(getline("."), "\\(\\(}$\\)\\|\\('\\w\\+':\\)\\)\\@="))
  endw
  normal 1G
endfunc

您可以使用 调用BrowseTags(“^ myTag $”) 来运行该功能,以完全匹配 myTag < / strong>,或使用一些正则表达式来获得类似的匹配。

虽然我从来没有费心去做,但是如果不打开缓冲区就可以编写各种命令来自动执行最常见的任务并不困难。