配置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"
)
相关推荐
liliangcsdn25 分钟前
smolagents - 如何在mac用agents做简单算术题
人工智能·macos·prompt
名字不要太长 像我这样就好1 小时前
【iOS】继承链
macos·ios·cocoa
潜龙95272 小时前
第4.3节 iOS App生成追溯关系
macos·ios·cocoa
qiqiqi(^_×)10 小时前
卡在“pycharm正在创建帮助程序目录”
ide·python·pycharm
小妖66610 小时前
vscode 源码编译
ide·vscode·编辑器
张人玉11 小时前
Visual Studio 的常用快捷键
ide·visual studio
玄辰星君12 小时前
【MAC】nacos 2.5.1容器docker安装
macos·docker·nacos
focksorCr13 小时前
在VsCode上使用开发容器devcontainer
ide·vscode·编辑器
Lum110413 小时前
PyCharm高效入门指南大纲
ide·python·pycharm
atwdy17 小时前
MacOS安装linux虚拟机
linux·运维·ubuntu·macos·utm