配置代码格式化风格
我们在使用VSCode编写代码时,使用Shift+Alt+F
格式化代码是十分常用的功能.
但VSCode默认的Visual Studio格式没有开启对齐连续声明的变量,但如结构体和连续声明的变量都没有对齐
**使用默认配置格式化后的代码:**可以看到结构体变量没有对齐
默认配置的代码: ![]() | 使用了自定义配置的代码:![]() |
---|
如果你想自己配置格式化设置,之前的教程一般都会让你装 clang-format插件
和LLVM
.但现在就不需要了,VSCode的C/C++插件
已经内置了这些东西.
已经使用VSCode安装C/C++插件
后仅需要更改一个C_Cpp.clang_format_style
就可以更改文件的的代码风格了
-
如果提供的
Visual Studio
、LLVM
、Google
、Chromium
、Mozilla
、WebKit
、Microsoft
、GNU
风格中有你需要的风格,鼠标选中复制后填入即可 -
如果预设的代码风格无法完全满足公司或个人的要求,那我们可以自己定制格式化文件
- 在电脑上找到一个位置创建
.clang-format
- 在
C_Cpp.clang_format_style
中输入file:<路径>/.clang-format就可以让所有C程序都用这个.clang-format文件进行格式化 (不要忘记在前面加上file:)
- 在电脑上找到一个位置创建
-
也可以直接使用
{键: 值, ...}
设置特定参数,这样就相当于直接保存在了settings.json
文件中
这个是我的.clang-format文件配置,不一定适合你 ,网上也有人分享更详细的配置,你也可以根据官方提供的文档自己选择想要的参数
官方文档:Clang-Format Style Options — Clang 19.0.0git documentation (llvm.org)
我的配置:
---
#Visual Studio 样式类似于: { BasedOnStyle: LLVM, UseTab: Never, IndentWidth: 4, TabWidth: 4, BreakBeforeBraces: Allman, AllowShortIfStatementsOnASingleLine: false, IndentCaseLabels: false, ColumnLimit: 0, AccessModifierOffset: -4, NamespaceIndentation: All, FixNamespaceComments: false }
# 代码风格配置文件,用于指导代码的格式化和排版,以保持代码的一致性和可读性。
Language: Cpp
# 基于LLVM代码风格进行配置,这是一种广泛采用的C++代码风格。
BasedOnStyle: LLVM
# 禁止使用制表符,而是使用空格进行缩进,以避免不同编辑器间显示格式的差异。
UseTab: Never
# 指定每个缩进层级使用4个空格,这是大多数C++代码风格的常见选择。
IndentWidth: 4
# 制表符的宽度设置为4个空格,与IndentWidth保持一致,确保使用制表符和空格混合缩进时的显示效果一致。
TabWidth: 4
# 按照Allman风格,函数和控制流结构的左花括号另起一行,以增强代码的可读性。
BreakBeforeBraces: Linux # 我们将结构体花括号放在同一行,以提高代码的可读性。
# 禁止将if语句(不包括else子句)放在一行内,以提高代码的可读性和可维护性。
AllowShortIfStatementsOnASingleLine: false
# 不对case标签进行额外缩进,保持与switch语句的左花括号对齐,以清晰显示控制流结构。
IndentCaseLabels: false
# 不设置列限制,允许代码自由扩展,注重代码的可读性而不强制限制行宽。
ColumnLimit: 0
# 访问修饰符(public、private、protected)的前面添加-4个空格的缩进,以区分于类成员的缩进。
AccessModifierOffset: -4
# 对所有命名空间层级进行缩进,以清晰显示命名空间的嵌套关系。
NamespaceIndentation: All
# 不修正命名空间注释的缩进,保持原始格式。
FixNamespaceComments: false
#长度差异过大时,比如上面是结构体,下面是int就加个空行
# 对齐连续声明
AlignConsecutiveDeclarations: true
# 对齐连续的赋值语句
AlignConsecutiveAssignments: true
...
如果需要对某个项目需要单独设置格式化
在项目文件夹下生成.vscode
文件夹,然后在.vscode
文件夹中放置.clang-format
和settings.json
文件
PS:使用Ctrl+Shift+P
输入open workspace settings
可以直接生成并打开工作区配置文件
在settings.json文件中填写
{
"C_Cpp.clang_format_style": "file:${workspaceFolder}/.vscode/.clang-format",
}
在工作区中就优先使用工作区文件夹下.vscode
文件夹下的.clang-format
文件
没有这个setting.json
文件就使用全局的配置文件,即我们上面配置的那个
让我们测试一下,将工作区下的.clang-format文件
修改缩进为2,然后改为1可以看到确实是按照我们的设置进行的格式化
实际上.clang-format
文件的位置可以根据项目要求放置或随意放置只需要修改settings.json
文件中的路径即可
支持性最好的配置
C_Cpp.clang_format_style | 配置为file |
---|---|
C_Cpp.Clang_format_fallback Style | 使用{键: 值, ...} |
让我们先看这句话:“file
从当前目录或父目录中的 .clang-format
文件加载样式`”(默认配置就是file)
在当前目录 | 在父目录 |
---|---|
![]() | ![]() |
都加载当前文件夹的.clang-format
文件而不是加载全局设置.
这样的话,在.clang-format
文件位置满足这两种情况时,就不用配置工作区的setting.json
文件指定位置了了.
VSCode其他的配置
我们可以设置保存时自动格式化Editor: Format On Save
放心:只有手动保存触发自动格式化,自动保存不触发自动格式化