【发布时间】:2024-06-23 08:35:01
【问题描述】:
我想知道是否可以从 exuberant ctags 生成的标签中自动完成函数参数?我注意到,当我生成标签时,我看到函数参数和函数,因此假设可以完成参数是合乎逻辑的。
我很熟悉诸如 clang_complete 和 youcompleteme 之类的替代方案,它们使用了 clang 编译器,但这是一个附加的依赖项。我已经在使用 Tagbar + EasyTags 等,所以为什么不直接使用标签,如果它已经存在,而不是让 vim 膨胀。
【问题讨论】:
-
我尝试了一些使用 ctags 并完成函数参数的插件(虽然不记得确切的名称),但它们在相当大的项目上都不好用:类似的函数名称很常见(比如,不同类的成员函数)。我也使用了omnicppcomplete 大约一年,在大型项目中它也很丑陋。我真的建议你尝试使用 clang 的插件,效果很好:由真正的编译器完成,而不是 ctags 的丑陋方法。我对 clang 的完成感到满意。
-
从无上下文的 ctag 切换到上下文感知的 clang-complete 或 YCM 可能会更好。话虽如此,我认为他们没有完成函数参数。 YCM 真的很cool,能够只输入单词中的几个字母(不一定是前缀)并让它完成我想要的实际内容很好。顺便说一句,为什么是函数参数?您希望多久使用一次与签名完全相同的名称?
-
我有点困惑你想要达到的目标。 “完整的函数参数”是什么意思?您可以将任何内容传递给函数:文字字符串、变量名称、另一个函数调用的结果、文字十六进制数字等。任何这些都可以在您键入完成函数的另一个调用时完成。或者,您是否只想查看有关函数接受哪些参数的指南?
-
什么意思?我的意思是“int Add (int a, int b)”中的函数参数,所以当我尝试完成一个函数时,它会显示 Add (int a, int b),而不仅仅是 Add。另外,使用 ctags 还是很不错的,我可以使用 Tagbar 来展示我在一个类中的函数等等,这使得查看源代码变得非常容易。而且我结合使用cscope + ctags,所以如果我想要一个定义什么的,我可以很容易地得到它。不管怎样,现在我正在使用 YCM、Ctags、Cscope 和 Tagbar 作为我的 C/C++ 开发工具。
-
@Ben 基本上,我想看看函数接受哪些参数的指南。
标签: c++ function vim autocomplete ctags