尝试转到vim中类/函数的定义
我已经安装了vim 7.2和ctags 5.8,并创建了带有“ctags-R/foopath”的标记文件 我有许多方法在几个类中使用相同的名称调用,因此如果我将光标放在函数调用中并执行“:tag”,它将显示列出的第一个标记。如果我多次执行“:tn”,我最终找到了方法尝试转到vim中类/函数的定义,vim,tags,definition,Vim,Tags,Definition,我已经安装了vim 7.2和ctags 5.8,并创建了带有“ctags-R/foopath”的标记文件 我有许多方法在几个类中使用相同的名称调用,因此如果我将光标放在函数调用中并执行“:tag”,它将显示列出的第一个标记。如果我多次执行“:tn”,我最终找到了方法 所以我的问题是:有没有办法直接显示包含我正在调用的正确方法的类的路径?:t选择标记名将为您提供匹配标记的列表,您可以输入所需标记的编号 :stselect标记名将首先拆分窗口 您还可以将光标放在单词上,然后输入g]以获得与该单词匹配
所以我的问题是:有没有办法直接显示包含我正在调用的正确方法的类的路径?
:t选择标记名将为您提供匹配标记的列表,您可以输入所需标记的编号
:stselect标记名
将首先拆分窗口
您还可以将光标放在单词上,然后输入g]
以获得与该单词匹配的标记列表
]
将拆分窗口并转到与光标下的单词匹配的第一个标记
g]
将拆分窗口并提供匹配列表。您可以使用taglist()将原始数据从标记读取到缓冲区。然后,您可以在缓冲区中搜索您感兴趣的其他条件,包括类名和部分文件目录
因此,要更精确地搜索“mytag”,请尝试:
要获得最多信息,请确保使用
搜索所需数据后,您将看到与前缀为'filename':的标记关联的文件名,以及前缀为'cmd':的行文本
将其放入带有一些代码的函数中,以美化和正确处理缓冲区:
" 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的精确匹配,或者使用一些正则表达式来获得类似的匹配
虽然我从来没有费心去做过,但编写各种命令并不会太难,因为它可以在不打开缓冲区的情况下自动完成最常见的任务。谢谢Dave,但我想你可能不理解我的意思,或者我解释得不对。让我们看看:假设我已经标记了几个具有foo()方法的类(class1、class2、class3等)。如果我有以下代码:$class3_object=newclass3();class3_对象->foo();我想直接转到与class3对应的标记,因为它是对象“class3\u object”的类。哈维
" 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