使用 clangd 代替 MSVC 的 IntelliSense
最近在用 VSCode 写数据处理代码的时候,经常碰到 VSCode 响应非常慢、甚至卡死的情况。通过查看进程占用情况,基本可以确定是 MSVC 的 IntelliSense 导致的。MSVC 的 IntelliSense 在处理大型项目或者复杂代码时性能很差。在 Gemini 的建议下,我尝试使用 clangd 来替代 MSVC 的 IntelliSense,结果非常不错。
clangd 是基于 LLVM 的 C / C++ 语言服务器,提供了代码补全、错误检查、跳转等功能。相比 MSVC 的 IntelliSense,clangd 的性能更好,响应更快,尤其是在大型项目中表现更为出色。不过缺点是我很多代码的函数注释使用的是 Doxygen 风格,MS 官方的插件可以拦截渲染请求,将注释渲染到函数的说明中去,但是 clangd 无法做到这一点,最后只能通过命令行的 doxygen 生成文档,再通过插件在 VSCode 中查看文档。
安装 clangd¶
除了在 VSCode 中安装 clangd 插件之外,还需要在系统中安装 clangd,例如 Ubuntu 可以直接用 apt 安装:
1 | sudo apt install clangd |
Make 工程 ¶
对于 Make 工程,需要生成 compile_commands.json 文件,clangd 通过这个文件来了解项目的编译选项。可以使用 Bear 工具来生成 compile_commands.json:
1 | sudo apt install bear |
CMake 工程 ¶
对于 CMake 工程,可以直接在 CMakeLists.txt 中添加以下内容来生成 compile_commands.json:
1 | set(CMAKE_EXPORT_COMPILE_COMMANDS ON) |
但是一般情况下,CMake 会将 compile_commands.json 生成在构建目录中,而 clangd 默认会在项目根目录中寻找这个文件。可以通过创建一个符号链接来解决这个问题:
1 | ln -s build/compile_commands.json compile_commands.json |
或者在配置文件中指定 compile_commands.json 的路径:
1 | "clangd.arguments": [ |
另外如果碰到了标准库无法找到的问题,可以在 VSCode 的设置中添加以下配置来指定标准库的位置:
1 | "clangd.arguments": [ |


