如何配置clang-format完全禁用空格对齐,仅使用制表符?
如何让clang-format仅用制表符格式化代码,完全替代空格对齐?
我希望代码仅使用制表符(Tabs)进行格式化,完全不使用空格对齐,实现类似astyle -T -S -p -xg -H -U -xU的效果。
当前clang-format会输出如下格式的代码(示例中4个空格等价于一个制表符):
SelEnd = StrSize; // а также считаем что все выделено - // надо же отличаться от обычных Edit ... for (int j = 0, S = TabSize - ((LeftPos + OutStrCells) % TabSize); j < S && int(OutStrCells) < EditLength; ++j, ++OutStrCells) { ... FS << fmt::Cells() << fmt::Skip(CellSelStart) << fmt::Truncate(CellSelEnd - CellSelStart) << OutStr.data();
但我希望改用制表符缩进替代这些空格对齐,该如何实现?
我当前使用的clang-format配置文件如下:
--- IndentWidth: 4 TabWidth: 4 UseTab: Always AlignAfterOpenBracket: DontAlign ColumnLimit: 120 AlignOperands: DontAlign BreakConstructorInitializers: AfterColon
要实现完全用制表符替代空格对齐,需在现有配置基础上补充以下关键选项,彻底禁用所有依赖空格的对齐规则:
- AlignConsecutiveAssignments: None:禁止连续赋值语句的等号对齐
- AlignConsecutiveDeclarations: None:禁止连续声明的变量名对齐
- AlignEscapedNewlines: Left:让换行后的反斜杠靠左对齐(仅用制表符)
- AlignTrailingComments: false:禁止尾随注释对齐
- BreakBeforeBinaryOperators: None:控制二元运算符换行时不进行空格对齐
- ContinuationIndentWidth: 4:确保续行缩进使用制表符(与IndentWidth保持一致)
- IndentCaseLabels: true:让case标签缩进用制表符
- AlignArrayOfStructures: None:禁止结构体数组的对齐
- PointerAlignment: Left:指针/引用符号采用左对齐(不依赖空格)
补充后的完整配置文件如下:
--- IndentWidth: 4 TabWidth: 4 UseTab: Always AlignAfterOpenBracket: DontAlign ColumnLimit: 120 AlignOperands: DontAlign BreakConstructorInitializers: AfterColon # 新增的关键配置 AlignConsecutiveAssignments: None AlignConsecutiveDeclarations: None AlignEscapedNewlines: Left AlignTrailingComments: false BreakBeforeBinaryOperators: None ContinuationIndentWidth: 4 IndentCaseLabels: true AlignArrayOfStructures: None PointerAlignment: Left
配置完成后,clang-format会彻底放弃所有空格对齐逻辑,所有缩进和续行对齐都使用制表符,完全匹配astyle -T系列参数的效果。
内容的提问来源于stack exchange,提问作者unxed
相关产品推荐
相关产品推荐

