Vim 下有没有包含头文件之后就可以补全函数声明的插件 - V2EX
V2EX = way to explore
V2EX 是一个关于分享和探索的地方
Sign Up Now
For Existing Member  Sign In
colorfulshark
V2EX    Vim

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

  •  
  •   colorfulshark Jan 6, 2019 3109 views
    This topic created in 2668 days ago, the information mentioned may be changed or developed.
    工作中会做一些 Linux 内核的驱动开发,跟正常的应用开发有些不同。
    1. 需要使用内核中的函数,而内核中的函数与内核版本密切相关
    2. 内核代码量很大,即使只把头文件生成 tags,也非常大,影响 vim 响应速度
    3. 一个项目中不会包含大量源文件,一般就只有一两个

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

    目前,我知道的两款轻量级 IDE,qt creator 和 vscode 都可以轻松实现这个功能,但是它们的 vim 输入模式都是残缺的,所以用起来还是有很多限制。
    4 replies    2019-01-18 23:55:55 +08:00
    quinoa42
        1
    quinoa42  
       Jan 6, 2019
    cquery 不行吗?
    chemzqm
        2
    chemzqm  
       Jan 17, 2019
    ccls 可以支持,但是需要 WorkpspaceFolders 功能,暂时还没有 vim 的 LSP client 支持这个功能。
    pony279
        3
    pony279  
       Jan 18, 2019
    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
        4
    pony279  
       Jan 18, 2019
    > 要么是基于 clang,但是 clang 几乎不能用来编译内核模块

    不太理解,基于 clang 不能编译没关系,只用代码补全,并不冲突。我在用 armcc 开发嵌入式项目,各种 clang 没有的 pragma,__attribute,并不影响 libclang 的补全功能。
    About     Help     Advertise     Blog     API     FAQ     Solana     3026 Online   Highest 6679       Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 35ms UTC 15:06 PVG 23:06 LAX 08:06 JFK 11:06
    Do have faith in what you're doing.
    ubao msn snddm index pchome yahoo rakuten mypaper meadowduck bidyahoo youbao zxmzxm asda bnvcg cvbfg dfscv mmhjk xxddc yybgb zznbn ccubao uaitu acv GXCV ET GDG YH FG BCVB FJFH CBRE CBC GDG ET54 WRWR RWER WREW WRWER RWER SDG EW SF DSFSF fbbs ubao fhd dfg ewr dg df ewwr ewwr et ruyut utut dfg fgd gdfgt etg dfgt dfgd ert4 gd fgg wr 235 wer3 we vsdf sdf gdf ert xcv sdf rwer hfd dfg cvb rwf afb dfh jgh bmn lgh rty gfds cxv xcv xcs vdas fdf fgd cv sdf tert sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf shasha9178 shasha9178 shasha9178 shasha9178 shasha9178 liflif2 liflif2 liflif2 liflif2 liflif2 liblib3 liblib3 liblib3 liblib3 liblib3 zhazha444 zhazha444 zhazha444 zhazha444 zhazha444 dende5 dende denden denden2 denden21 fenfen9 fenf619 fen619 fenfe9 fe619 sdf sdf sdf sdf sdf zhazh90 zhazh0 zhaa50 zha90 zh590 zho zhoz zhozh zhozho zhozho2 lislis lls95 lili95 lils5 liss9 sdf0ty987 sdft876 sdft9876 sdf09876 sd0t9876 sdf0ty98 sdf0976 sdf0ty986 sdf0ty96 sdf0t76 sdf0876 df0ty98 sf0t876 sd0ty76 sdy76 sdf76 sdf0t76 sdf0ty9 sdf0ty98 sdf0ty987 sdf0ty98 sdf6676 sdf876 sd876 sd876 sdf6 sdf6 sdf9876 sdf0t sdf06 sdf0ty9776 sdf0ty9776 sdf0ty76 sdf8876 sdf0t sd6 sdf06 s688876 sd688 sdf86