配置Xcode的SwiftFormat格式化快捷键,更方便更快速格式化

xcode 没有格式化代码的功能,只有缩进整理和多行拆分,习惯前端代码的开发方式,不格式化代码显得有些凌乱,幸好有开源的工具可以实现这样的功能,他就是SwiftFormat。官方地址:GitHub - nicklockwood/SwiftFormat: A command-line tool and Xcode Extension for formatting Swift code

安装使用教程:Xcode代码格式化SwiftFormat安装使用,以及不生效问题-CSDN博客

但是安装完之后,每次格式化都要点击Editor 下面的格式化,很是不友好,所以这里教大家如何配置快捷键:

1.从 Xcode 的菜单打开 Preferences... ,选中 Key Bindings

2.在右上的 Filter 里输入 swiftformat ,然后选中第二个 SwiftFormat > Format File

3.双击高亮行对应 Key 的位置,然后同时按下键盘上的 command + L(如果你喜欢其它快捷键可自行选择)

然后回到编辑区,就会发现已经生效了。

经过上述步骤,我们就给 Xcode 安装好了 SwiftFormat 的 Source Editor Extension,而且可以用快捷键触发。现在你可以在 Xcode 里随意选中一个 Swift 文件,然后按下快捷键 command + L,SwiftFormat 就会根据它当前的规则对这个被选中的 Swift 文件进行代码风格的格式化。如果你的代码经过 Git 管理,应该能看到格式化前后的差异,比如一些空行、逗号、缩进之类。

SwiftFormat规则配置

刚才提到规则 ,你可以打开 SwiftFormat for Xcode.app ,选中第二个 Rules Tab 进行调整

Swift version 选择 5.5(目前版本 0.49.8 所支持的最高 Swift 版本)

取消勾选 Infer Options Automatically ,这样的话我们可以搜索并调整一些选项的参数,例如:

  • 勾选 acronyms ,保持 Acronyms 其值为 ID,URL,UUID,VC ,这样一些属性命名中的缩略词会被自动"纠正",以符合 Swift 的 API 设计指南
  • 勾选 blankLinesBetweenImports,会移除 import 语句之间的空行
  • 勾选 blockComments ,自动将注释换成 ///// 风格
  • extensionAccessControl 。将其 Extension Access Control Level Placement 改为 on-declarations,以将访问控制定义在具体的属性或方法上
  • fileHeader 。将其 Header 改为 strip,以去除头部的文件注释
  • hoistPatternLet 。将其 Pattern Let 改为 inline ,以符合 Google 的规范
  • indent 。将其 Ifdef Indent 改为 no-indentIndent Strings 改为 true
  • modifierOrder 。将其 Modifier Oder 改为 open,public,final,fileprivate,private,private(set),override,convenience,lazy,static,weak,如果你不喜欢这个顺序可自行调整
  • spaceAroundOperators 。将其 Ranges 改为 no-space ,这样 .....< 操作符前后的空格会被去除
  • unusedArguments 。将其 Strip Unused Arguments 改为 closure-only,防止一些方法的实参被替换为下划线
  • wrap 。将其 Max Width 改为 100,这样太长的代码会被折行(不过效果可能不好,最好是发现需要折行就手动调整)
  • 针对 wrapArguments ,将其
    • Wrap Arguments 改为 before-first
    • Wrap Collections 改为 before-first
    • Wrap Conditions 改为 preserve
    • Wrap Parameters 改为 before-first
    • Wrap Return Type 改为 preserve
    • Wrap Typealiases 改为 preserve

可搜索并关闭如下规则:

  • markTypes 。开启的话,会强制你写一些 // MARK: 标记
  • organizeDeclarations。开启的话,会按照更细致的规则对各种声明进行排序,可能不是你所希望的
  • sortedImports。开启的话,会将 import 的语句按照字母表排序
  • sortedSwitchCases。开启的话,会将 switch 的 case 语句按照字母表排序
  • wrapSwitchCases。开启的话,会强制 switch 时每个 case 单独一行

可进一步参考详细的规则文档

如果你觉得上面的设置比较繁琐,那也可以下载 nixzhu.swiftformat,然后在 SwiftFormat for Xcode.app 中,通过菜单 File -> Open... 打开它,即可导入上述规则

小技巧

如果你想将有多个参数的函数的参数进行折行,只需先将其尾部的括号换行(可在输入最后一个参数后进行),然后按下快捷键(比一个个手动换行要快不少)

Swift 复制代码
// 例如

func test(id: Int, name: String
) {}

test(id: 42: name: "nix"
)

// 将变为

func test(
    id: Int,
    name: String
) {}

test(
    id: 42,
    name: "nix"
)
相关推荐
笑非不退6 小时前
macOS开发环境配置与应用开发
macos
colorknight11 小时前
1.2.3 HuggingFists安装说明-MacOS安装
人工智能·低代码·macos·huggingface·数据科学·ai agent
white.tie15 小时前
vscode配置golang
ide·vscode·golang
mashagua16 小时前
本地访问autodl的jupyter notebook
ide·python·jupyter·autodl
DaphneOdera1716 小时前
Jupyter | jupyter notebook 使用 conda 环境
ide·jupyter·conda
一只积极向上的小咸鱼17 小时前
jupyter本地配置
ide·python·jupyter
4v1d17 小时前
Jupyter的使用分享
ide·python·jupyter
GEEKVIP18 小时前
如何修复变砖的手机并恢复丢失的数据
macos·ios·智能手机·word·手机·笔记本电脑·iphone
艾伦~耶格尔18 小时前
IDEA 配置 Git 详解
java·ide·git·后端·intellij-idea
HoneyMoose19 小时前
大厂笔试现已经禁用本地IDE怎么看
ide