【VScode | 格式化文档】一文掌握VScode使用 clang-format 的文档格式化(C/C++)

VScode使用Clang-format格式化C/C++代码

😁博客主页😁:🚀https://blog.youkuaiyun.com/wkd_007🚀
🤑博客内容🤑:🍭嵌入式开发、Linux、C语言、C++、数据结构、音视频🍭
🤣本文内容🤣:🍭介绍 🍭
😎金句分享😎:🍭你不能选择最好的,但最好的会来选择你——泰戈尔🍭
⏰发布时间⏰: 2025-07-04

本文未经允许,不得转发!!!


在这里插入图片描述
在这里插入图片描述

🎄一、概述

博主日常使用的是C/C++语言写代码,留意到 vscode 有个 格式化文档 的功能,但是默认的功能并不好用,或者说直接格式化之后并不能达到自己想要的效果,例如:格式化之后,原本对齐的自定义宏会变成不对齐;对齐的变量定义也变成不对齐的等等。
在这里插入图片描述
盲猜这个功能肯定是可以设置的,经过搜索了解到可以通过设置 C/C++ 插件的Clang_format_style来设置格式化文档的格式,下面章节演示如何在VScode设置clang-format的以及需要注意的点。


在这里插入图片描述

🎄二、简单了解 Clang-format

clang-format是一款代码格式化工具,可用于格式化 C/C++/Java/JavaScript/JSON/Objective-C/Protobuf/C# 代码。

在使用clang-format命令行工具或代码中的clang::format::reformat(...)函数时,可以选择预定义的样式(LLVM、Google、Chromium、Mozilla、WebKit、Microsoft)之一,或者通过配置特定的样式选项来创建自定义样式。

clang-format 支持两种方式提供自定义样式选项:直接在 -style= 命令行选项中指定样式配置或使用 -style=file 并在项目目录中的 .clang-format_clang-format 文件中放置样式配置。

.clang-format 文件采用 YAML 格式,它的设置格式可以参考官方文档:
1、Clang 21.0.0git documentation CLANG-FORMAT STYLE OPTIONS
2、Clang 21.0.0git documentation CLANGFORMAT

或者参考这篇文章:Clang-format格式化及配置参数

Clang-format格式化及配置参数(效果展现):https://zed0.co.uk/clang-format-configurator/

下面是目前使用的 .clang-format 文件,将其复制后,保存到电脑:

---
# 编程语言:
Language: Cpp

# 基于哪种风格: LLVM|Google|Chromium|Mozilla|WebKit|Microsoft|GNU
BasedOnStyle: Google

# 圆括号之后,多行内容,进行对齐
AlignAfterOpenBracket: Align

# 对齐结构体数组
AlignArrayOfStructures: Right

# 连续赋值时,对齐所有等号
AlignConsecutiveAssignments: true

# 连续声明时,对齐所有声明的变量名
AlignConsecutiveDeclarations: true

# 连续宏定义时,对齐所有定义值
AlignConsecutiveMacros: AcrossEmptyLinesAndComments

# AlignOperands Align将对齐分割到多行上的单个表达式的操作数
AlignOperands: Align

# 对齐连续的尾随的注释
AlignTrailingComments: true

# 允许将一个函数声明的所有参数移到下一行.
AllowAllParametersOfDeclarationOnNextLine: false

# 将简单的语句块放到一个单行
AllowShortBlocksOnASingleLine: true

# if (a) return;放单行 属性:Never、WithoutElse没有else的可以放单行、OnlyFirstIf只有第一个if放单行、AllIfsAndElse总是把简短的if, else if和else语句放在同一行。
AllowShortIfStatementsOnASingleLine: Never

# BinPackArguments:如果为false,函数调用的参数要么全部在同一行,要么各有一行。
BinPackArguments: true

#BinPackParameters:如果为false,函数声明或函数定义的参数将全部在同一行或各有一行。
BinPackParameters: true

BreakBeforeBraces: Custom
# 控制单独的大括号换行事件,BraceWrapping 只有当BreakBeforeBraces设置为Custom时才有效
BraceWrapping:
  # 使控制语句(if/for/while/switch/..)换行。
  AfterControlStatement: true
  
  # 使枚举定义换行。
  AfterEnum: true
  
  # 使函数定义换行。
  AfterFunction: true
  
  # 使结构定义换行。
  AfterStruct: true
  
  # 使共同体定义换行。
  AfterUnion: true
  
  # 对case后面的大括号换行
  AfterCaseLabel: true
  
  # 在else之前换行。
  BeforeElse: true
  
  # 在while之前换行
  BeforeWhile: true
  
  # 换行大括号缩进。
  IndentBraces: false
  
  # 空函数是否可以放在单行:flase允许 true不允许
  SplitEmptyFunction: true
  
  #空类,结构或联合主体是否可以放在单行:flase允许 true不允许
  SplitEmptyRecord: true
  
  #空namespace是否可以放在单行:flase允许 true不允许
  SplitEmptyNamespace: true

SpaceBeforeParens: Custom
#控制圆括号前的单独空格,只有当SpaceBeforeParens设置为Custom时才有效
SpaceBeforeParensOptions:

  #在控制语句关键字(for/if/while…)和开括号之间放置空格
  AfterControlStatements: true
  
  #在函数声明名称和开括号之间不允许使用空格
  AfterFunctionDeclarationName: false

#指针对齐:右
PointerAlignment: Right

# 三元运算符将被放置在换行后
BreakBeforeTernaryOperators: true

# 每行字符的限制,0表示没有限制
ColumnLimit: 0

# 缩进空格宽度:4
IndentWidth: 4

# 保留在赋值操作符之前的空格
SpaceBeforeAssignmentOperators: true

# 不要排序include的头文件
SortIncludes: Never

# 允许重新排版注释
ReflowComments: true

# 尾行注释前的空格数
SpacesBeforeTrailingComments: 1

# 连续空行的最大数量
MaxEmptyLinesToKeep: 1

# 使用tab字符: Never从不使用, ForIndentation仅在缩进时使用制表符, ForContinuationAndIndentation, Always
UseTab: Never

# SpacesInParentheses如果为真(true), 将会在“(”之后和“)”之前插入空格。
SpacesInParentheses: false

# SpacesInSquareBrackets如果为真(true),将会在“[”之后和“]”之前插入空格。
SpacesInSquareBrackets: false

# 在多行字符串字面量时之前断行
AlwaysBreakBeforeMultilineStrings: false

在这里插入图片描述

🎄三、VScode 设置 Clang-format

✨3.1 确保安装了C/C++插件

首先,确保你的VScode软件已经安装了下图这个C/C++插件:
在这里插入图片描述


✨3.2 进入设置页面

在VScode左下角,按下图操作,或者直接按Ctrl+,,进入设置页面
在这里插入图片描述


✨3.3 设置 .clang-format 文件路径

在设置页面,输入clang_format_style,找到clang_format格式设置,然后将上个小节保存的.clang_format文件路径复制到对应输入框。下面是我的路径,注意路径前有个file:

file:C:\Users\Administrator\AppData\Roaming\Code\User\.clang-format

在这里插入图片描述


✨3.4 设置“保存时自动格式化”

如果你把 文档格式化 的效果调到了自己满意了,想每次保存时都自动格式化,那么可以按下图设置:
在设置页面输入format on save,然后勾选下图②的Format On Save选项。设置好,每次保存文件时都会自动格式化。

在这里插入图片描述


在这里插入图片描述

🎄四、总结

👉本文介绍了VScode针对C/C++语言进行代码格式化的功能,介绍了 clang-format 功能,以及设置 VScode 的 clang-format 配置。

在这里插入图片描述
如果文章有帮助的话,点赞👍、收藏⭐,支持一波,谢谢 😁😁😁

参考:
clang-format的介绍和使用:https://www.cnblogs.com/tudou/p/13322854.html
Clang 21.0.0git documentation:https://clang.llvm.org/docs/ClangFormat.html
VScode使用clang format文档自动代码格式化(C语言):https://blog.youkuaiyun.com/weixin_42217191/article/details/129516325
VSCode + clang-format:https://blog.youkuaiyun.com/q441990439/article/details/131909415
Clang-format格式化及配置参数:https://blog.youkuaiyun.com/Once_day/article/details/127761573

<think>好的,我现在需要帮助用户在VSCode中设置自动格式化C++文件,并将最大行宽设置为128。首先,我得回想一下VSCode的代码格式化机制,尤其是针对C++的部分。用户提到的.clang-format文件是关键,因为Clang-Format是常用的C++代码格式化工具,集成在VSCode中。 首先,用户需要安装C/C++扩展,这样才能支持Clang-Format。然后,用户需要在项目根目录或者用户目录下创建或修改.clang-format文件。这个文件中的ColumnLimit参数控制每行的最大宽度,默认通常是80,用户想改成128。所以应该指导用户找到这个参数并修改。 接下来,需要确保VSCode的设置中启用了Clang-Format作为默认格式化工具。用户可能需要检查settings.json中的"C_Cpp.formatting"选项是否为“clangFormat”。另外,用户可能还需要设置保存时自动格式化,这可以通过设置"editor.formatOnSave"为true来实现。 还有可能遇到的问题,比如全局设置和项目本地设置的优先级。如果项目中有.clang-format文件,通常会覆盖全局设置,所以最好在项目内创建这个文件。同时,修改后可能需要重启VSCode或者重新加载窗口使配置生效。 用户还可能想知道如何验证设置是否生效,可以建议他们使用格式化命令(Shift+Alt+F)查看代码是否按128字符换行。或者故意写一行超过80但不超过128的代码,保存后看是否被自动换行。 另外,需要注意其他可能影响行宽的设置,比如是否允许注释自动换行,但Clang-Format的ColumnLimit主要针对代码行,注释可能有单独的设置。不过通常ColumnLimit就足够了。 总结步骤应该是:安装扩展→创建/修改.clang-format→设置ColumnLimit为128→配置VSCode使用Clang-Format→启用保存时格式化→测试验证。同时提醒用户可能需要注意的地方,比如文件位置和配置覆盖问题。</think>在VSCode中设置C++文件自动格式化并限制行宽为128字符,可通过以下步骤实现: ### 一、基础配置步骤 1. **安装必要扩展** 确保已安装微软官方`C/C++`扩展(默认包含Clang-Format支持) 2. **创建.clang-format文件** 在项目根目录或用户目录(如`~/.config/`)新建`.clang-format`文件,内容如下: ```yaml Language: Cpp BasedOnStyle: Google ColumnLimit: 128 # 控制行宽 UseTab: Never IndentWidth: 4 ``` 3. **配置VSCode设置** 在`settings.json`中添加: ```json { "C_Cpp.formatting": "clangFormat", "editor.formatOnSave": true, "clang-format.fallbackStyle": "file" // 强制使用项目配置文件 } ``` ### 二、验证配置效果 1. 创建测试代码: ```cpp int main() { std::cout << "This is a very long line that should trigger auto-formatting based on 128 character column limit" << std::endl; } ``` 2. 保存文件后,代码应自动格式化为: ```cpp int main() { std::cout << "This is a very long line that should trigger auto-formatting based on 128 character column limit" << std::endl; } ``` ### 三、高级配置项(可选) - 注释对齐:`AlignTrailingComments: true` - 函数参数换行:`AllowAllParametersOfDeclarationOnNextLine: false` - 包含文件顺序:`SortIncludes: true` >[!NOTE] >若配置未生效,检查: >1. `.clang-format`文件路径是否正确 >2. 是否被其他格式化工具覆盖(可执行`Ctrl+Shift+P > Format Document With > Clang-Format`强制指定)[^2]
评论 16
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

wkd_007

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值