解决的问题
让 VS Code 在不使用.clang-format
或_clang-format
文件时,默认使用自定义的 C++ 代码格式化样式。以下假定规则文件为D:\ClangFormat\rules.txt
。
格式规则
具体设置参照 Clang-Format官方文档,也可以使用 Clang-Format交互式构建器。
贴上我习惯使用的代码格式化样式(Java 代码的习惯样式)。
以下是rules.txt
内容(夹带私货(bushi)):
# 基于GNU格式
BasedOnStyle: GNU
# 使用支持的最新标准
Standard: Latest
# 行不限制长度
ColumnLimit: 0
# 缩进4个空格
IndentWidth: 4
# 左花括号在名称之后
BreakBeforeBraces: Attach
# 函数参数的小括号与函数名间不空格, 控制语句的小括号与语句间空格
SpaceBeforeParens: ControlStatements
# 换行时将二元运算符置后
BreakBeforeBinaryOperators: None
# 允许空的花括号在一行上
AllowShortBlocksOnASingleLine: Empty
# 函数返回值与函数在同一行
AlwaysBreakAfterDefinitionReturnType: None
AlwaysBreakAfterReturnType: None
# 指针符号贴在类型边
PointerAlignment: Left
# 访问修饰符贴在左边
AccessModifierOffset: -4
# case和default之前缩进
IndentCaseLabels: true
# C式类型转换中间留空格
SpaceAfterCStyleCast: true
# 类继承冒号之前不留空格
SpaceBeforeInheritanceColon: false
# 构造函数初始化冒号之前不留空格
SpaceBeforeCtorInitializerColon: false
# 命名空间全部缩进
NamespaceIndentation: All
# 不排序头文件引用
SortIncludes: Never
# C++11式初始化对象花括号前留空格
SpaceBeforeCpp11BracedList: true
C/C++ 拓展
- 首先需要安装
C/C++
扩展模组。
- 在设置中查找
C_Cpp.clang_format_style
,填入file:D:\ClangFormat\rules.txt
。
- 或者直接编辑配置文件
"C_Cpp.clang_format_style": "file:D:\\ClangFormat\\rules.txt"
- 现在可以回到编辑器,使用
Alt + Shift + F
进行代码格式化。
ClangD + Clang-Format 拓展
ClangD 是一个比 C/C++ 拓展更好的对代码智能提示和补全的工具。
- 首先需要安装
ClangD
和Clang-Format
扩展模组,并且需要删除C/C++
模组或者禁用C/C++
模组的补全功能(如果同时存在C/C++
模组)。
禁用C/C++
的补全功能。
"C_Cpp.intelliSenseEngine": "Disabled",
"C_Cpp.autocomplete": "Disabled",
"C_Cpp.errorSquiggles": "Disabled"
- 设置
Clang-Format
拓展的Style
为file:D:\ClangFormat\rules.txt
,并且这里我关闭了这个拓展对其它语言的支持。
"clang-format.style": "file:D:\\ClangFormat\\rules.txt",
"clang-format.language.apex.enable": false,
"clang-format.language.java.enable": false,
"clang-format.language.javascript.enable": false,
"clang-format.language.typescript.enable": false
- 设置C和C++文件的默认格式化工具。
"[cpp]": {
"editor.defaultFormatter": "xaver.clang-format"
},
"[c]": {
"editor.defaultFormatter": "xaver.clang-format"
}
- 现在可以回到编辑器,使用
Alt + Shift + F
进行代码格式化。