vim查找结构元素/成员

问题描述 投票:0回答:1

没有人知道vim插件,该插件允许在C或C ++的情况下查找C或类中的结构成员/结构元素?

我正在考虑类似于使用cscope / ctags跳转到结构定义的操作,但理想情况下,我希望类似于将光标移至所需变量上的操作,并且击键会拉起类似于使用omni时的表-完成?

我一直在尝试找到一些东西,但无济于事。

要求是:应该专门用于vim。我的开发工作中有99%都使用了远程Linux机器。

[通常,我的工作流程是,git克隆项目,设置ctags和cscope,打开所需的文件并加载我的cscope db,那是我一天中大部分时间的位置,在我有书呆子树的目录中移动插件。

到目前为止,我结合使用了ctags / cscope和calltree插件来查找函数被调用者。

我缺少一个允许我简单地查找struct元素的插件。我并不真正使用全功能,因为它非常慢,而且我已经放弃让它变得更快。

有什么想法吗?

vim vim-plugin ctags cscope omnicomplete
1个回答
0
投票

使用通用标签,只要您使用了正确的选项,就可以始终使用obtain the members of a class/struct type

如果您在两行之间进行阅读,这意味着如果您坚持使用vimscript,就没有有效的方法在C ++变量上进行操作。 I've tried do it,但我最终放弃了这条路;无法支持auto的路径。

现在,我开始使用(/实现)另一种方法来分析C ++代码并利用vim中的信息:我依赖libclang。问题是它需要在当前翻译单元(TU)上进行操作,并且如果TU很长(例如,如果它包含许多长文件),则自上次更改以来,第一次解析需要花费时间。 (我希望解决方案可以随着C ++ 20模块而改变)-分析是按需完成的,而不是在后台进行的。注意:我的plugin目前正在开发中,我还没有提供可以返回变量类型及其相关信息(类型,成员,可能的枚举值...)的高级Vim函数。

如果您的最终目标是完成成员,基于clang的工具将为此目的提供专用的API,比完全分析当前TU效率更高。您不希望使用的插件会利用此API。 LSP服务器甚至尝试缓存尽可能多的信息(仅用于导航和完成目的)。

请注意,有一些插件,例如tagbar,试图组织使用ctags提取的信息,并将其呈现在分层视图中。请注意,这对于消除歧义或auto都无济于事。

© www.soinside.com 2019 - 2024. All rights reserved.