如何配置clang-format使用制表符而非空格进行缩进
clang-format配置UseTab=Always仍输出空格缩进的解决方案
先明确核心原因:Google预设样式默认会设置
IndentWidth: 2、TabWidth: 8,你之前的命令仅传入UseTab: Always,两个宽度参数不匹配的情况下,clang-format会自动用空格填充缩进的差值,最终输出的内容看起来全是空格缩进。同时部分旧版本clang-format的预设样式优先级高于命令行传入的单参数,会直接覆盖你设置的UseTab值。正确的命令行格式化写法:
需要同时指定UseTab、IndentWidth、TabWidth三个参数,保证IndentWidth和TabWidth数值一致,示例如下(缩进宽度按你的需求修改成4或者其他数值即可):clang-format -style="{BasedOnStyle: Google, UseTab: Always, IndentWidth: 4, TabWidth: 4}" -i /path/to/file.ino排除本地配置文件干扰:
如果你的工作目录或者上级目录存在.clang-format配置文件,clang-format会默认优先读取该文件的配置,优先级高于命令行参数,你可以添加--fallback-style=none参数强制使用命令行传入的样式:clang-format --fallback-style=none -style="{BasedOnStyle: Google, UseTab: Always, IndentWidth: 4, TabWidth: 4}" -i /path/to/file.ino验证配置是否生效:
执行以下命令可以打印最终生效的配置,确认参数是否符合预期:clang-format -style="{BasedOnStyle: Google, UseTab: Always, IndentWidth: 4, TabWidth: 4}" --dump-config | grep -E "UseTab|IndentWidth|TabWidth"输出的
UseTab值为Always、IndentWidth和TabWidth和你设置的数值一致时,再执行格式化即可正常输出制表符缩进。针对.ino文件的特殊适配:
部分旧版clang-format对Arduino的.ino格式识别存在兼容性问题,可以添加-assume-filename=test.cpp参数强制按照C++语法解析文件,避免格式识别异常导致的缩进错误。
内容的提问来源于stack exchange,提问作者WhatsYourFunction
相关产品推荐
相关产品推荐

