如何禁止Vim的coc-clangd编写C代码时自动插入头文件
coc-clangd 自动插入头文件问题修复方案
coc-clangd 自动插入头文件是其配套的 clangd 服务默认开启的「补全时自动导入依赖头文件」特性,当你编写C语言代码时,clangd 有时会误匹配C++标准库头文件(比如你遇到的 <cstddef.h>)插入到C代码中,导致C代码编译报错。
你可以通过修改 coc 配置解决该问题,具体步骤如下:
- 在 Vim 正常模式下执行命令
:CocConfig,打开 coc 全局配置文件coc-settings.json - 根据你的需求选择以下任意一种配置方案写入文件即可:
- 方案1:完全禁用自动插入头文件功能
所有使用coc-clangd的场景下都不会自动插入任何头文件,补全仅给出代码提示,头文件需要手动引入:"clangd.autoInsertHeaders": false - 方案2:仅禁止插入特定误报头文件
保留自动插入头文件功能,仅屏蔽你不需要的头文件,可自行扩展黑名单列表:"clangd.headerInsertionBlacklist": [ "cstddef.h", "cstdint.h", "cstdio.h" ] - 方案3:分语言控制功能开关
编写C语言时禁用自动插头文件,编写C++时保留该功能:"[c]": { "clangd.autoInsertHeaders": false }, "[cpp]": { "clangd.autoInsertHeaders": true }
- 保存配置后执行
:CocRestart重启coc服务,配置即可生效。
注意:如果配置不生效,可将本地 clangd 升级到14及以上版本,旧版本clangd可能不支持上述配置项。
内容的提问来源于stack exchange,提问作者Wil123
相关产品推荐
相关产品推荐

