图片显示全局变量Class A,但局部变量不能在标签栏中显示,为什么?我想要标签栏显示局部变量 str,m,n 以及如何设置?
问问题
2985 次
3 回答
8
ctags解析的内容取决于语言;根据屏幕截图,您对 C/C++ 感兴趣,但它不这样做。我不知道最初的原因,但我猜:
- 拥有庞大的代码库(谁没有?),您(也许还有编辑器)会被标签的数量所淹没。请记住,标签栏有点特殊,它只显示当前文件的标签;通常标签数据库是针对整个项目的。
- 保持单个函数简短而小是一种很好的做法;当理想情况下每个功能都适合整个屏幕时,谁需要标签查找?!
Exuberant Ctags解析器可以使用基于正则表达式的自定义语言定义进行扩展(参见--langdef=<language>
和--regex-<language>
参数)。如果你能为局部变量想出一个好的模式,你可以对它们进行解析。
于 2013-03-06T16:18:04.583 回答
3
Exuberant Ctags 支持将局部变量作为标签,默认情况下它们只是关闭。我想他们会让你的标签文件变得很大,对于任何规模的项目来说,我从来没有因为这个原因打开它们(我的标签文件已经有很多兆字节了)。但是,如果您想尝试一下,只需在生成标签文件时将--c++-kinds=+l
(假设为 c++)添加到您的命令中,这应该可以工作。ctags
于 2013-09-13T22:41:58.217 回答
0
首先,tagbar 显示来自 ctags 的所有标签,并且 ctags 默认不处理函数原型、外部变量和局部变量(在 shell 中试试这个:ctags --list-kinds=c++);
其次,tagbar 的 tagbar_type_cpp 变量用于此:
let g:tagbar_type_cpp = {
\ 'kinds' : [
\ 'd:macros:1',
\ 'g:enums',
\ 't:typedefs:0:0',
\ 'e:enumerators:0:0',
\ 'n:namespaces',
\ 'c:classes',
\ 's:structs',
\ 'u:unions',
\ 'f:functions',
\ 'm:members:0:0',
\ 'v:global:0:0',
\ 'x:external:0:0',
\ 'l:local:0:0'
\ ]
\ }
看最后两行。
就这样。
于 2013-11-20T12:29:18.987 回答