如何将 Xcode 中 Vim 模式下的 JK 按键映射到 ESC 按键

自从 Xcode 推出 Vim 模式,我就研究了一下如何在 Xcode 中开启。

有趣的是我在日常使用中并不会将 Xcode 作为常用编辑器。甚至可以更绝对一些,日常工作学习中几乎就不会使用 Xcode。一来是因为 Xcode 太「重」,启动很慢。二来也不开发 iOS App。开启 Vim 模式的原因仅仅是因为好奇,加上日常自己写代码使用 Vim 较多,所以就想感受一下在 Xcode 中使用 Vim 是怎样一种体验。

对于 Vim 的使用,虽然会有很多快捷键,但使用最频繁的就是 ESC 按键。我在自己的 Vim 设置中,就是将 ESC 按键映射到了 JK 两个按键,也就是连续快速点击「J」和「K」就会触发 ESC 按键。

但 Xcode 并没有提供 Vim 模式下的自定义按键的映射功能。最近重新学习 iOS 开发,对于 ESC 按键的映射实在忍无可忍。终于让我找到了一种「曲线救国」的方案。

实现这个功能的是一款 macOS 系统下的开源键盘映射软件,名字叫「Karabiner-Elements」。

首先,直接到官网下载最新的版本。

接着,按照官方文档的截图示意进行授权安装。安装过程包括开启对应的系统权限,相应的根据提示开启即可。官方文档的步骤很详细,还配了截图,步骤不算多,很快就能设置完。

安装完成之后,本地启动「Karabiner-Elements」App,点击窗口左侧的「Complex Modifications」,如下图所示:

点击右侧设置界面顶部的「Add your own rule」按钮,将弹窗里的默认配置删除。打开 Gist 页面,复制里边的 json 配置信息,将其原封不动的粘贴到弹窗里,点击弹窗右上方的「Save」按钮,保存配置。完成之后即可看到一条名为「jk to escape for xcode」的配置。

此时,在Xcode 中开启 Vim 模式(如果已经是开启状态,可以直接体验),即可享有 「J」「K」 按键映射到 ESC 按键的丝滑体验。

Gist 中的配置是我根据网上找到的一份配置稍微进行了的修改,如果想自行修改配置,可参考官方配置手册

如何在 Xcode 点击 command+S 保存时,自动对 Swift 代码进行格式化

开始学习 SwiftUI,发现 Xcode 貌似没有自动格式化的功能。网上找了一些资料,有些教程里的截图已经过时了,简单摸索后,重新总结了一下。

完成此功能,一共需要三步:

  1. 安装 SwiftFormat-for-xcode 插件
brew install --cask swiftformat-for-xcode
  1. 系统设置

插件安装完成后,需要先进行系统设置,路径如下:

系统设置 -> 隐私与安全性 -> 扩展 ->Xcode Source Editor

点击 Xcode Source Editor,出现一个弹窗,将 SwiftFormat勾选上。

此时,重启 Xcode,完成后会在 Xcode 的 Editor 选项下方出现 SwiftFormat 选项,说明 SwiftFormat 已经安装完成。

但如果想在 Xcode 点击 command + s 保存的时候执行格式化,还需要最后一步设置。

  1. keyboard 快捷键设置

按照如下路径,从系统设置进入:路径如下:

系统设置 -> 键盘 -> 键盘快捷键(键盘导航下方) -> App 快捷键

点击窗口右侧的 + 按钮,如下图所示添加快捷键:

其中 「Format File」可以根据你喜好编辑为「Format Selection」或「Lint File」,点击「完成」即全部设置完毕。

此时,在 Xcode 中编辑代码后,点击 command + S 保存时,会自动执行 Xcode 中 SwiftFormat 功能。