跳到主要内容
极客日志极客日志面向AI+效率的开发者社区
首页博客GitHub 精选镜像AI 生图工具UI配色美学隐私政策关于联系
搜索内容 / 工具 / 仓库 / 镜像...⌘K搜索
注册
博客列表
C++

在 VSCode 中配置并使用 Clang-Format 进行 C++ 代码自动格式化

在 Visual Studio Code 中配置 Clang-Format 实现 C++ 代码自动格式化的两种主流方案。方案一利用 clangd 扩展负责格式化,方案二利用 Microsoft C/C++ 扩展配合 clang-format 可执行文件。文章详细列出了前提条件,包括必要扩展的安装、clang 工具链的配置以及 .clang-format 规则文件的放置。提供了具体的 settings.json 配置示例,解释了配置项的工作原理,并给出了快速验证格式化是否生效的方法。此外还涵盖了通过图形界面或直接编辑 JSON 修改配置的步骤,以及常见问题排查指南。最后推荐参考官方文档以进一步自定义代码风格。

松间照月发布于 2026/3/22更新于 2026/7/2461 浏览
在 VSCode 中配置并使用 Clang-Format 进行 C++ 代码自动格式化

在 VSCode 中用 Clang-Format 自动格式化 C++ 代码(clangd 与 cpptools 两种方案)

本文介绍两种常见方案,每种方案都使用仓库中的 .clang-format 作为唯一格式规则,区别在于'谁来执行格式化':

  • 方案一:clangd 扩展负责格式化
  • 方案二:Microsoft C/C++ 扩展(cpptools)+ clang-format 负责格式化

1. 前提条件

1.1 安装必要扩展

至少安装:

  • clangd 扩展:提供 C++ 语言服务和格式化(方案一主角)
  • C/C++(ms-vscode.cpptools)扩展:提供 IntelliSense、调试等功能(方案二主角)
1.2 确保已安装 clang / clang-format

远程或本地环境中需要有 clang / clang-format,常见位置例如:

/usr/bin/clangd /usr/bin/clang++ /usr/bin/clang-format 

如果你的 SDK 提供了自己的 clang-format,也可以用 SDK 里的路径:

${workspaceFolder}/clangd_tools/bin/clang-format 
1.3 工程中存在 .clang-format

在仓库根目录或组件根目录放置 .clang-format,例如:

${workspaceFolder}/data/.clang-format 

clangd 和 cpptools 都可以读取这份文件作为风格定义。 规则说明详见官方文档:https://clang.llvm.org/docs/ClangFormatStyleOptions.html


2. 方案一:clangd 扩展负责格式化

2.1 配置示例(工作区 .vscode/settings.json)
{
  // 1)clangd 语言服务器配置
  "clangd.path": "/usr/bin/clangd",
  "clangd.arguments": [
    "--background-index", "-j",   
    
    
          
  
  
   
   
  
   
     
     
  
   
     
     
  

"24"
,
"--clang-tidy"
,
"--clang-tidy-checks=performance-*,bugprone-*,misc-*,google-*,modernize-*,cppcoreguidelines-*,hicpp-*,clang-analyzer-*,concurrency-*,boost-*,readability-*,portability-*"
,
"--query-driver=/usr/bin/clang++"
,
"--compile-commands-dir=${workspaceFolder}/build/compile_commands"
,
"--all-scopes-completion"
,
"--completion-style=detailed"
,
"--header-insertion-decorators"
,
"--header-insertion=iwyu"
,
"--include-cleaner-stdlib"
,
"--pch-storage=memory"
,
"--enable-config"
]
,
// 2)通用编辑器行为
"files.autoSave"
:
"afterDelay"
,
"editor.formatOnSave"
:
true
,
// 3)为 C/C++ 指定 clangd 扩展作为默认 formatter
"[cpp]"
:
{
"editor.defaultFormatter"
:
"llvm-vs-code-extensions.vscode-clangd"
,
"editor.formatOnSave"
:
true
}
,
"[c]"
:
{
"editor.defaultFormatter"
:
"llvm-vs-code-extensions.vscode-clangd"
,
"editor.formatOnSave"
:
true
}
}
2.2 这个配置是如何工作的?
  • clangd 用哪一份规则格式化? clangd 会从当前源文件所在目录开始,向上递归查找 .clang-format:因此:你仓库中的 .clang-format 就是 clangd 的风格来源。
    • 比如你在 ${workspaceFolder}/data/src/... 下编辑文件,
    • clangd 会一路向上找到 ${workspaceFolder}/data/.clang-format,
    • 然后按这份文件里的规则(缩进、括号风格等)来排版。
  • 你需要做的事情
    • 保证工程里有一份有效的 .clang-format(例如 data/.clang-format);
    • 安装并启用 clangd 扩展;
    • 按上述方式设置 editor.defaultFormatter 和 editor.formatOnSave。

谁在执行格式化? [cpp] / [c] 中的

"editor.defaultFormatter": "llvm-vs-code-extensions.vscode-clangd"

决定了:保存 .cpp/.h/.c 时(editor.formatOnSave: true),以及执行 'Format Document' 时,VSCode 会调用 clangd 扩展 来格式化代码。


3. 方案二:cpptools + clang-format 负责格式化

如果你想直接使用 Microsoft C/C++ 扩展(cpptools)自带的 clang-format 集成来格式化,可以采用下面的配置。

3.1 配置示例(工作区 .vscode/settings.json)
{
  // 1)指定 cpptools 使用 clang-format 作为格式化引擎
  "C_Cpp.formatting": "clangFormat",
  // 2)指定 .clang-format 配置文件路径(使用你自己的配置)
  "C_Cpp.clang_format_style": "file:${workspaceFolder}/data/.clang-format",
  // 3)指定 clang-format 可执行文件路径
  "C_Cpp.clang_format_path": "/usr/bin/clang-format",
  // 4)通用编辑器行为
  "files.autoSave": "afterDelay",
  "editor.formatOnSave": true,
  // 5)为 C/C++ 指定 cpptools 作为默认 formatter
  "[cpp]": {
    "editor.defaultFormatter": "ms-vscode.cpptools",
    "editor.formatOnSave": true
  },
  "[c]": {
    "editor.defaultFormatter": "ms-vscode.cpptools",
    "editor.formatOnSave": true
  }
}
3.2 这个配置是如何工作的?
  • 使用 clang-format 作为格式化后端;

  • 从 /usr/bin/clang-format 启动 clang-format 可执行文件;

  • 使用 ${workspaceFolder}/data/.clang-format 这份规则文件作为格式化风格。

  • 你需要做的事情

    • 保证 /usr/bin/clang-format(或你指定的路径)是可执行的;
    • 在 ${workspaceFolder}/data/.clang-format 中写好团队统一的规则;
    • 安装并启用 C/C++(ms-vscode.cpptools)扩展;
    • 按上述方式设置 editor.defaultFormatter 和 C_Cpp.* 选项。

cpptools 如何使用 clang-format 和 .clang-format?

"C_Cpp.formatting": "clangFormat",
"C_Cpp.clang_format_path": "/usr/bin/clang-format",
"C_Cpp.clang_format_style": "file:${workspaceFolder}/data/.clang-format"

含义是:

谁在执行格式化?[cpp] / [c] 中的

"editor.defaultFormatter": "ms-vscode.cpptools"

决定了:保存 .cpp/.h/.c 时,以及执行 'Format Document' 时,VSCode 会调用 cpptools 扩展 来格式化代码。


4. 如何选择与验证

  • 已经在使用 clangd 做补全 / 诊断: 推荐选 方案一,让 clangd 同时负责格式化,集成度更高。
  • 团队更习惯 cpptools,不想引入 clangd: 可以选 方案二,由 cpptools + clang-format 负责格式化。

快速验证是否用到了你自己的 .clang-format:

  1. 在 data/.clang-format 中把 ColumnLimit 改成一个明显的值(比如 60);
  2. 保存 .clang-format;
  3. 打开任意 .cpp,执行 'Format Document' 或直接保存;
  4. 如果代码行宽明显被折行到约 60 列,说明当前方案已经在正确使用这份 .clang-format。

5. 如何在 VSCode 中设置或修改这些配置

上面两种方案(clangd / cpptools)都可以通过 VSCode 的图形界面或直接编辑 JSON 来配置。

5.1 通过图形界面(Settings UI)配置
  1. 菜单路径:文件 → 首选项 → 设置(或使用快捷键 Ctrl+,)。
  2. 右上角切换设置作用域:
    • 如果你是在 Remote SSH / 远程容器中,用右上角的齿轮图标把作用域切到 远程;
    • 如果只想对当前仓库生效,可以选择 工作区。
  3. 在搜索框中输入关键字:
    • default formatter:将 C++ 和 C 的默认格式化器设置为 clangd 扩展或 cpptools 扩展:
      • 方案一:选择 llvm-vs-code-extensions.vscode-clangd;
      • 方案二:选择 ms-vscode.cpptools。
    • formatOnSave:勾选 Editor: Format On Save(保存时自动格式化)。
    • clangd:按需要调整 clangd.path、clangd.arguments 等(与第 2 章示例对应)。

C_Cpp:按需要设置 C_Cpp.formatting = clangFormat、C_Cpp.clang_format_* 等(与第 3 章示例对应)。

用图形界面改完后,VSCode 会自动把对应项写入当前'用户 / 远程 / 工作区'的 settings.json 中。

5.2 直接编辑 settings.json(推荐远程环境)
  1. 按 Ctrl+Shift+P 打开命令面板;
  2. 搜索并选择:
    • Preferences: Open Remote Settings (JSON)(远程主机的设置);或
    • Preferences: Open Workspace Settings (JSON)(当前工作区的设置)。
  3. 在打开的 settings.json 中,粘贴或修改前文的示例配置(任选方案一或方案二那一段 JSON)。

一般来讲:

  • 远程模式(Remote SSH)下,远程设置对应的 JSON 通常位于类似:
    • Linux 示例:~/.vscode-server/data/Machine/settings.json(仅供理解路径结构,不必手动编辑这个文件)。
  • 工作区设置则保存在当前仓库根目录下:
    • <workspace>/.vscode/settings.json

6. 常见问题排查

如果配置未生效,请重点检查以下几点:

  • .clang-format 文件是否存在,格式是否正确?
  • clang-format 是否能在当前路径中运行(权限/依赖)?
  • 是否正确安装并启用了 Microsoft C/C++ 插件?
  • 当前 VSCode 是否连接到正确的工作区或远程环境?

7. 总结

通过以上配置步骤,你将实现:

  • 高效的代码自动格式化
  • 支持远程开发与本地开发统一体验
  • 满足团队代码风格一致性要求

建议参考官方文档以进一步自定义 .clang-format 文件: Clang-Format Style Options

目录

  1. 在 VSCode 中用 Clang-Format 自动格式化 C++ 代码(clangd 与 cpptools 两种方案)
  2. 1. 前提条件
  3. 1.1 安装必要扩展
  4. 1.2 确保已安装 clang / clang-format
  5. 1.3 工程中存在 .clang-format
  6. 2. 方案一:clangd 扩展负责格式化
  7. 2.1 配置示例(工作区 .vscode/settings.json)
  8. 2.2 这个配置是如何工作的?
  9. 3. 方案二:cpptools + clang-format 负责格式化
  10. 3.1 配置示例(工作区 .vscode/settings.json)
  11. 3.2 这个配置是如何工作的?
  12. 4. 如何选择与验证
  13. 5. 如何在 VSCode 中设置或修改这些配置
  14. 5.1 通过图形界面(Settings UI)配置
  15. 5.2 直接编辑 settings.json(推荐远程环境)
  16. 6. 常见问题排查
  17. 7. 总结
  • 免费图片AI生成工具免费生成了解详情
  • Magick API 一键接入全球大模型注册送1000万token查看
  • 免费图片视频在线生成30秒,将你的创意变成现实开始设计
  • X/Twitter免费视频下载器免登陆无限额度免费视频解析下载了解详情
  • 100+免费在线小游戏爽一把
极客日志微信公众号二维码

微信扫一扫,关注极客日志

微信公众号「极客日志V2」,在微信中扫描左侧二维码关注。展示文案:极客日志V2 zeeklog

更多推荐文章

查看全部
  • LLaMA-Factory 微调 Qwen3-VL 多模态大模型指南
  • Python Pandas 核心数据结构与操作实战
  • Python 自学完整学习路线:从基础语法到项目实战指南
  • Telegram 搜索机器人推荐:高效检索频道与资源
  • VS Code 中使用 Docker 容器进行开发
  • Buzz 离线语音转文字工具安装与配置(基于 Whisper)
  • Qwen3-VL 与 LLaMA-Factory 实现 Grounding 任务 LoRA 微调
  • Conceal 加密实战:保护 Android 应用敏感数据
  • Agent Skills 设计详解:构建可复用的 AI 智能体工作流
  • 告别从零开发!AI+AR眼镜开源方案来了|PUSHI G1赋能18个全场景,联动腾讯/阿里云落地
  • 机器人通讯总线选型指南:CAN/FD、高速 485 与 EtherCAT 对比
  • macOS 配置 Git 平台 SSH 连接
  • AM32 无人机电调源码架构与工作原理解析(上)
  • GoView 低代码数据可视化开发平台使用指南
  • 无人机 RemoteID 合规指南:ArduRemoteID 开源方案详解
  • OpenClaw 集成 GitHub Copilot GPT-5.4 技术修复指南
  • GitHub Copilot 兼容 OpenAI/Anthropic API 代理服务详解
  • Spring AI Agent Skills 接入与原理剖析
  • Midjourney 第三方 API 服务技术原理与合规边界探讨
  • 达梦数据库 Java 外部函数配置小记

相关免费在线工具

  • Base64 字符串编码/解码

    将字符串编码和解码为其 Base64 格式表示形式即可。 在线工具,Base64 字符串编码/解码在线工具,online

  • Base64 文件转换器

    将字符串、文件或图像转换为其 Base64 表示形式。 在线工具,Base64 文件转换器在线工具,online

  • Markdown转HTML

    将 Markdown(GFM)转为 HTML 片段,浏览器内 marked 解析;与 HTML转Markdown 互为补充。 在线工具,Markdown转HTML在线工具,online

  • HTML转Markdown

    将 HTML 片段转为 GitHub Flavored Markdown,支持标题、列表、链接、代码块与表格等;浏览器内处理,可链接预填。 在线工具,HTML转Markdown在线工具,online

  • JSON 压缩

    通过删除不必要的空白来缩小和压缩JSON。 在线工具,JSON 压缩在线工具,online

  • JSON美化和格式化

    将JSON字符串修饰为友好的可读格式。 在线工具,JSON美化和格式化在线工具,online