tags: Sublime C/C++ Tips
写在前面
前几天刚吹捧完Astyle这款代码格式化插件, 最近又不得不进行改变了, 原因就是C++20中新增的三路比较运算符, 长这样:<=> , 使用Astyle一格式化就变成了:<= > , 鉴于这个问题, google也没给出合适的答案, 反而是一个两年前的bug issue还没修复映入眼帘…
不得已, 我关闭了pad-oper 这个选项, 使得Astyle在格式化C++时候不会在操作符两边填充空格, 但是这就导致了代码比较紧凑, 看来接着用Astyle是不可能了.
下面还是看看使用mac原生的clang进行代码格式化的操作吧…
安装clang-format
光有xcode的开发者工具还不行, 还要用brew 安装llvm 后端支持, 并将其添加到配置文件, 如下:
brew install llvm
echo 'export PATH="/opt/homebrew/opt/llvm/bin:$PATH"' >> ~/.zshrc
source ~/.zshrc
在sublime中调出命令面板(command+shift+P)然后输入insp , 输入clang format , 回车即可.
简单配置
然后就可以开始定制格式了, 具体就是复制default文件到user, 然后修改格式即可, 首先是settings:
{
"binary": "/opt/homebrew/opt/llvm/bin/clang-format",
"style": "Custom",
"format_on_save": true,
"languages": ["C", "C++", "C++11", "JavaScript", "Objective-C", "Objective-C++"],
}
然后修改clang_format_custom 文件, 我这里修改了一些诸如tab换为空格, 缩进为4之类的设置, 大家可以根据提示进行设置.
{
"BasedOnStyle": "Google",
"AlignAfterOpenBracket": true,
"AlignConsecutiveDeclarations": true,
"AllowShortBlocksOnASingleLine": true,
"AllowShortCaseLabelsOnASingleLine": true,
"BraceWrapping":{
},
"IndentWidth": 4,
"MaxEmptyLinesToKeep": 2,
"SpacesBeforeTrailingComments": 4,
"TabWidth": 4,
"UseTab": "Never"
}
ref
|