使用 SwiftFormat 自动调整 Xcode 代码排使用 SwiftFormat 自动调整 Xcode 代码排版

2024-08-22 03:33:27
0
80

在开发过程中,保持代码的整洁和一致性是至关重要的,不仅可以提升代码的可读性,还能够加快团队协作的效率。
对于使用 Swift 的开发者来说,SwiftFormat 提供了一个强大的工具,可以自动调整 Xcode 中的代码排版。本文将详细介绍如何在 Xcode 项目中集成和使用 SwiftFormat,以及如何为它配置自动运行。


什么是 SwiftFormat
SwiftFormat 是一个代码格式化工具,用于在 macOS、Linux 或 Windows 上重新格式化 Swift 代码,其主要目标是使代码更一致、更整洁。
SwiftFormat 项目地址:https://github.com/nicklockwood/SwiftFormat


注意和另一款常用的 Xcode 插件 SwiftLint 的区别。SwiftLint 是一款 Swift 代码静态分析的工具,主要用于识别 Swift 项目中不符合编程规范的写法。简单来说,SwiftFormat 专注于格式,而 SwiftLint 专注于代码质量、识别错误并可以输出分析报告。



为什么使用 SwiftFormat
Xcode 提供了基本的代码格式调整功能,你可以选中代码后,按 Cmd + I 来自动排版。但是这项功能仅仅只能够调整代码缩进,实际效果非常一般。
比如下面这个代码,使用 CMD + I 自动调整后,可读性仍然不好:


SwiftFormat 代码格式优化的效果:



调整后代码可读性大大提升,写代码心情都变好了。


安装 SwiftFormat


Xcode 16 或以上


从 Xcode 16 开始,swift-format 已经作为一个内置功能,随 Xcode 默认安装。
在 Xcode 16 的 Quick Action (Cmd + Shift + A) 中搜索 Swift-Format,可以看到 swift-format 相关提示:




Xcode 15 或以前
如果你是 Xcode 15 或以前的版本,可以参考如下方式进行安装。
安装 SwiftFormat 的最简单方法,是从最新的 GitHub 中下载 SwiftFormat.for.Xcode.app.zip 解压后安装。


SwiftFormat for Xcode 是 Xcode 的一个扩展,可重新格式化 Swift 代码。
解压后打开,你会看到下面这样的说明:



打开设置 -> 通用 -> 登录项与扩展,滑动到最下面,在扩展选项中找到 Xcode Source Editor:


点击右侧感叹号,并启用扩展。


完成后,务必完全重启 Xcode 使扩展生效。 
如果你在上述设置路径中没有找到选项(取决于 macOS 系统版本),你可以尝试在系统设置 -> 隐私与安全性 -> 扩展项中找到 SwiftFormat for Xcode。



使用 SwiftFormat
在 Xcode 16 中,SwiftFormat 的快捷键是 Control + Shift + I,或者你也可以在 Xcode -> Editor -> Structure -> 中找到它:


如果是 Xcode 15 或以前的版本,并且你已经手动完成安装,那么可以在 Xcode -> Editor -> SwiftFormat 中找到它。
选中要优化的代码,使用 Control + Shift + I 即可快速完成自动排版:



配置自动运行
最后,我们可以配置为使用 Command + S 保存时,自动应用 SwiftFormat 排版。


我也尝试了基于时间自动触发排版(使用 BetterTouchTool 工具实现),例如每 1 秒自动排版一次,这样相当于一边编写代码一边自动排版,但实际效果并不好——会打断代码编写过程,造成光标移动。因此,Command + S 触发是更加符合实际体验的方案。
要实现 Command + S 自动应用排版,有两种方式。



使用 macOS 系统工具
打开系统设置 -> 键盘 -> 键盘快捷键 -> App 快捷键


点击 + 添加一条新的记录,按照下图方式配置。应用标题为 Editor->Structure->Format File with 'swift-format',注意->前后没有空格。



完成后,回到 Xcode 使用 Command + S 保存时,即可自动触发 SwiftFormat 排版。



使用 BetterTouchTool 工具
BetterTouchTool 是一款为 macOS 设计的多功能工具,它允许用户自定义触控板、鼠标、键盘和 Touch Bar 的各种手势和操作,极大地提升了设备的交互效率和个性化体验。
使用 BetterTouchTool 工具,创建一个 Command + S -> Ctrl + Shift + I 的映射即可,如下图所示:




评论
登录 才可参与讨论