VS Code中.editorconfig的brace_style设置无效,如何控制大括号换行?
问题
使用VS Code作为编辑器,已安装EditorConfig for VS Code扩展,项目根目录的.editorconfig配置如下:
root = true [*.c] indent_style = space indent_size = 4 end_of_line = lf charset = utf-8 trim_trailing_whitespace = false insert_final_newline = false brace_style = attach
希望将根目录下Project A文件夹中的main.c格式化,使大括号与语句同行,但设置brace_style=attach后格式化无效,indent_size等其他配置正常生效。文件结构:
Root |-- .editorconfig |-- Project A |-- main.c
main.c内容:
#include <stdio.h> #include <math.h> double fun(double x, double n) { return pow(x, n); } int main() { printf("Please write a base number:\n"); double base, exponent; scanf("%lf", &base); printf("Write a exponent number:\n"); scanf("%lf", &exponent); printf("The numbers %lf and %lf gives: %lf\n", base, exponent, fun(base, exponent)); }
解决方案
问题出在VS Code默认的C/C++格式化器(Clang-Format)对EditorConfig的brace_style选项需要额外配置才能识别,以下是两种可行方案:
方案1:让Clang-Format优先读取EditorConfig规则
- 打开VS Code设置(快捷键
Ctrl+,),搜索C_Cpp: Clang Format Fallback Style。 - 将该选项的值设置为
EditorConfig,确保Clang-Format优先采用EditorConfig中的格式化规则。 - 打开
main.c,按下Ctrl+Shift+I触发格式化,大括号会自动与语句同行。
方案2:添加.clang-format文件明确配置
如果方案1不生效,可在项目根目录创建.clang-format文件,直接定义大括号格式规则,内容如下:
BasedOnStyle: LLVM # 配置大括号不换行,对应brace_style=attach的需求 BraceWrapping: AfterFunction: false AfterControlStatement: false # 对齐EditorConfig的其他配置 IndentWidth: 4 UseTab: Never EndOfLine: LF TrimTrailingWhitespace: false InsertFinalNewline: false
保存文件后,重新格式化main.c即可生效。
关键说明
indent_size等基础配置能直接生效,是因为这些选项在Clang-Format中有直接映射;而brace_style属于复杂格式规则,需要确保Clang-Format正确识别EditorConfig的该选项,或者通过.clang-format明确配置对应的规则。
内容的提问来源于stack exchange,提问作者morten
相关产品推荐
相关产品推荐

