前言
Xcode中自带使用代码格式化 Editor -> structure-> Re-Indent 并不好用或者说根本没有效果,然后去搜索了下格式化工具,一开始想在Xcode中先安装Alcatraz插件,通过Alcatraz插件然后去安装clang-format格式化插件,无奈在某篇博客中有位大佬提到Alcatraz对Xcode版本有要求,最终使用命令行安装。
本机的mac系统版本:macOS Ventura 13.3.1
本机的Xcode版本:14.3
安装
终端输入命令,等待安装成功
brew install clang-format
安装成功查看版本
clang-format --version
成功查看到clang-format版本信息说明安装成功了,如下图所示:
image.png
添加快捷键
成功安装插件之后,为了更方便快捷的使用插件,一般会在xcode设置一个快捷键快速格式化选中代码。以下是如何设置快捷键以及设置clang-format的配置文件。
-
应用程序找到【自动操作】
image.png -
添加shell脚本-注意方框内的内容
添加一个shell和快捷键绑定,shell脚本的内容就是执行代码格式化
image.png
shell脚本中的代码
export PATH=/usr/local/bin:$PATH
clang-format
- 保存【重要】
保存的时候会让起一个名称,这个名称后面会用到,需要注意
tips:如果查看自己创建的脚本【/Users/你的用户名/Library/Services】 -
添加快捷键
打开系统设置
image.png
找到键盘设置
image.png
添加快捷键
1.应用程序选择xcode
2.菜单标题为上面保存的名称
3.键位设置【不能和xcode其他快捷键冲突,我这里设置的是commond+alt+k】
image.png
6.重启xcode
点击你需要格式化的代码,右键如下图:
image.png
设置插件格式
当执行快捷键操作时会报错,需要复制方框中的路径找到.clang-format文件
tips:在桌面键位commond + shift + g添加上面的路径找到文件位置,打开文件,将里面的代码替换为下面的格式
image.png
# 工具 https://github.com/mapbox/XcodeClangFormat(需要添加签名使用)
# 函数名详细地址 英文 http://clang.llvm.org/docs/ClangFormatStyleOptions.html
# 函数名详细地址 中文 https://www.cnblogs.com/PaulpauL/p/5929753.html
# 基于样式
BasedOnStyle: LLVM
# 对齐注释
AlignTrailingComments: true
# 指针和引用的对齐方式
PointerAlignment: Right
# 用于缩进的列数
IndentWidth: 4
# switch的case缩进
IndentCaseLabels: true
# OC里面,在@property后加空格
ObjCSpaceAfterProperty: true
# OC里面,在Protocol前后加空格
ObjCSpaceBeforeProtocolList: true
# 单行注释前的空格数
SpacesBeforeTrailingComments: 1
# 连续的空行保留几行
MaxEmptyLinesToKeep: 1
# 保留block里面的空行
KeepEmptyLinesAtTheStartOfBlocks: false
# 每行字符的限制,0表示没有限制
ColumnLimit: 0
# []中添加空格
SpacesInSquareBrackets: false
# ()中添加空格
SpacesInParentheses : false
# 容器类前添加空格
SpacesInContainerLiterals: true
# 赋值运算符前加空格
SpaceBeforeAssignmentOperators: true
# 在空括号中加空格
SpaceInEmptyParentheses: false
# 在<>中间插入空格
SpacesInAngles: false
# 换行的时候对齐操作符
AlignOperands: true
# 括号中的(),{},[]代码对齐方式
#AlignAfterOpenBracket: Align
#ContinuationIndentWidth: 0
# 赋值=对齐
AlignConsecutiveAssignments: false
# 声明参数对齐
AlignConsecutiveDeclarations: false
# 运算符位置
BreakBeforeBinaryOperators: None
# 允许短的函数放在同一行
#AllowShortFunctionsOnASingleLine: None
# 允许case在同一行
AllowShortCaseLabelsOnASingleLine: false
# 允许if在同一行
AllowShortIfStatementsOnASingleLine: false
# 允许while在同一行
AllowShortLoopsOnASingleLine: false
# 允许将简单的语句块放到同一行
AllowShortBlocksOnASingleLine: false
#缩进函数名
IndentWrappedFunctionNames: false
# 形参 如果为false要么都在同一行,要么各有一行
BinPackParameters: false
# 实参 如果为false要么都在同一行,要么各有一行
BinPackArguments: false
# 大括号换行
BreakBeforeBraces: Custom
BraceWrapping:
# class定义后面
AfterClass: true
# 控制语句后面
AfterControlStatement: false
# enum定义后面
AfterEnum: false
# 函数定义后面
AfterFunction: false
# 命名空间定义后面
AfterNamespace: false
# struct定义后面
AfterStruct: false
# union定义后面
AfterUnion: false
# catch之前
BeforeCatch: false
替换完成,再次使用快捷键格式化代码生效。