Vim 下有没有包含头文件之后就可以补全函数声明的插件

2019-01-06 00:32:41 +08:00
 colorfulshark
工作中会做一些 Linux 内核的驱动开发,跟正常的应用开发有些不同。
1. 需要使用内核中的函数,而内核中的函数与内核版本密切相关
2. 内核代码量很大,即使只把头文件生成 tags,也非常大,影响 vim 响应速度
3. 一个项目中不会包含大量源文件,一般就只有一两个

我的需求其实非常简单,C 语言包含头文件之后,通过设置头文件路径,然后自动补全头文件中的函数声明,如果能提示参数就更好了。尝试了很多插件,要么是基于 tags,要么是基于 clang,但是 clang 几乎不能用来编译内核模块,看到有作者说 YCM 集成的 omnicppcomplete 可以做到,但是它似乎也是基于 tags 的。

目前,我知道的两款轻量级 IDE,qt creator 和 vscode 都可以轻松实现这个功能,但是它们的 vim 输入模式都是残缺的,所以用起来还是有很多限制。
2413 次点击
所在节点    Vim
4 条回复
quinoa42
2019-01-06 05:25:42 +08:00
cquery 不行吗?
chemzqm
2019-01-17 17:30:16 +08:00
ccls 可以支持,但是需要 WorkpspaceFolders 功能,暂时还没有 vim 的 LSP client 支持这个功能。
pony279
2019-01-18 23:53:02 +08:00
https://github.com/Rip-Rip/clang_complete - 支持参数展开,我没体验过
https://github.com/zchee/deoplete-clang - 没研究过,应该不支持参数展开
https://github.com/tweekmonster/deoplete-clang2 - 没研究过,因该也不支持
https://github.com/ncm2/ncm2-pyclang - 这个是我开发的插件,支持参数展开
pony279
2019-01-18 23:55:55 +08:00
> 要么是基于 clang,但是 clang 几乎不能用来编译内核模块

不太理解,基于 clang 不能编译没关系,只用代码补全,并不冲突。我在用 armcc 开发嵌入式项目,各种 clang 没有的 pragma,__attribute,并不影响 libclang 的补全功能。

这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。

https://www.v2ex.com/t/524278

V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。

V2EX is a community of developers, designers and creative people.

© 2021 V2EX