【XCode 使用技巧】官方工具 x 你所不知道的开发功能

XCode 使用技巧

XCode x Swift x SwiftUI

目录

  • 前言 : 何时才能愉快的写 Code ?
  • 源起 XVim2 插件
  • 开发环境
  • 面板
  • 档案导航
  • 分页与视窗
  • 代码导航
  • 编辑
  • 执行与除错
  • 自定义
  • 结尾 : 时间与耐心

前言 : 何时才能愉快的写 Code ?

学习 iOS 的开发有不少的门槛, 除了必须先有一台 Mac 电脑,还要熟悉 Swift 语法 与 iOS SDK。

001.develop-condition

好不容易入手了 Mac,第一个遇到的困难点,就是陌生的开发工具 XCode。


还好 不像学习「程序语言」,需要许多的「时间」与「耐心」,开发工具的使用是可以速成的。
而且 XCode 除了免费之外,还是 Apple 官方的开发工具,本身也是个具有特色且功能强大的软件 !

这次的教程直接看影片会比较快了解功能作用,
此篇文章除了必要的说明外,只会简单列表影片中出现的快捷键,以供後续遗忘时可以快速回顾。

源起 XVim2 插件

这次的 XCode 开发指南,起源於我在 XCode 安装 Vim 的插件 「 XVim2 」

XVim2

https://github.com/XVimProject/XVim2

安装时,必要的「证书签入」动作与 MacOS 最新版本的 Big Sur 安全机制冲突,导致发生开发者帐号无法登入,也无法安装到实体手机的状况发生。

安全机制冲突

https://github.com/XVimProject/XVim2/issues/340

002.xvime-issue

不得已只能重新安装,并且在不熟悉工具的情况下,进行开发。


替代方案

在寻找的过程中,我发现部分的 XCode 快捷键模式是属於 emacs 类型

例如:

  • 方向键上下左右 是 control + P/N/B/F
  • 光标移动到行首是 control + A
  • 删除字符到行尾是 control + K
  • 组合使用 control + AKK 就代表删除单行文字
最大限度熟悉 XCode 的功能与快捷键也成为选项之一。

指南内容

集合网路上搜集到的各种 XCode 使用技巧与对映我使用 IntelliJVim 的经验,整理从面板、导航一直到执行、除错与自定义快捷键的各项功能。

003.xcode-contents

我认为熟悉这个工具的使用,对於开发者来说会是个合理且划算的投资

(Apple 系列产品 : macOS、iOS、iPadOS、WatchOS、tvOS)

开发环境

作业系统

macOS Big Sur 11.2 版本

开发者工具

XCode 12.4 版本

近期开发的 Side Project

  • Swift 语法
  • SwiftUI 框架
所以只会针对这个语法与框架的专案,介绍相关的功能与快捷键操作,
如果没有看到 Storyboard 的设计介面与 Object-C 语法的相关操作是正常的情况,这些部分这次就不会介绍。

面板

功能面板

  • cmd + 0 : 导航栏
  • cmd + opt + 0 : 检视器
  • cmd + shift + y : 除错区

功能面板 : 导航细节

  • cmd + 1 : Project
  • cmd + 2 : Source Control
  • cmd + 3 : Symbols
  • cmd + 4 : Find
  • cmd + 5 : Issues
  • cmd + 6 : Tests
  • cmd + 7 : Debug
  • cmd + 8 : Breakpoints
  • cmd + 9 : Report

功能面板 : 检视器细节

  • cmd + opt + 1 : File
  • cmd + opt + 2 : History
  • cmd + opt + 3 : Quick Help
  • cmd + opt + 4 : Attributes

功能面板 : 控制区细节

  • cmd + shift + C : 控制台
  • cmd + shift + Y : 除错区
(除错区右下方的两个图示按钮,可以决定哪一项的功能完整显示)

SwiftUI 框架 : 预览视窗

  • cmd + opt + enter : 画布

编辑器 : 辅助视窗

  • cmd + enter : 只显示编辑器
一次性的关闭当前所有的辅助功能
(右上角列表图示,开启的辅助功能都一并关闭)

档案导航

  • cmd + shift + J : 在导航栏聚焦档案
  • cmd + opt + J : 聚焦导航过滤器
  • cmd + shift + O : 快速开启

补充 :

cmd + shift + J :
此快捷键要在有开启档案的情况下才能作用,
因为该功能其实是在导航列中聚焦当前档案,如果面板中没有档案的话只能用 cmd + 1。

编辑区块 :

编辑区块的左上角,四个方格的图示 :

004.nav-control-1

此部分的快捷键功能 :

  • control + 1 : Related Items
  • control + 2 : Previous Files History 之前历史
  • control + 3 : Next Files History 之後历史
  • control + 4 : Top Level Items 顶层的目录向下寻找
  • control + 5 : Group Files 同层级目录
  • control + 6 : Document Items 函式结构

分页与视窗

个人觉得是个非常具有特色的功能

分页

左侧列表选择档案後,不像其他编辑器只是单纯聚焦或者开启分页,而是会随着选择变换分页中的内容,
要滑鼠点击两次才会加入到分页上。

分页的名称上,有的文字是倾斜,有的文字是正常,倾斜文字就是会随着选择而变动的分页。

005.tab-preview

可以理解为:

这个是文档的快速预览功能,需要再多一个动作(点击两下)才会真正加入到分页上。

  • cmd + shift + J : 跳到列表
  • cmd + opt + O : 开启在分页上

分页操作

• control + ` : 聚焦回编辑区块
• cmd + shift + [ : 分页向左切换
• cmd + shift + ] : 分页向右切换
• cmd + w : 关闭当前分页
• cmd + opt + w : 关闭其他分页

(关闭全部分页 : cmd + shift + w 已经有其他功能使用,替代分案 : 组合使用 cmd + opt + w , cmd + w)

辅助编辑器

  • cmd + control + T : 开启辅助编辑器

006.second-windows

开启在辅助编辑器

• 滑鼠操作 : opt + 点击
• 键盘操作 : cmd + opt + ,
• cmd + opt + shift + , : 选择位置开启

按住 opt 後 Enter 开启 : 
    - cmd + shift + O : Open Quickly
    - control + 1 : Related Items
	- control + 2 : Previous Files History
	- control + 3 : Next Files History
	- control + 4 : Top Level Items
	- control + 5 : Group Files

辅助编辑器操作

编辑区块切换 : 
	- control + ` : 编辑视窗顺序切换
	- cmd + opt + ` : 功能区块顺序切换
	- cmd + J : 选择编辑区块

聚焦於当前编辑区块 : 
	- cmd + control + shift + enter
	(暂时隐藏原先的视窗状态并不会关闭,左上角的倾斜的双箭头图示显示状态)

关闭辅助编辑器 : 
	- cmd + control + shift + W

视窗分页

cmd + T : 开启视窗分页

007.tab-window

这个分页拉出来也是一个独立的编辑器,可以这样理解:

这个分页就是另外一个独立的工作区,不会去共用侧边栏的导览 或者 近期档案的导航功能

视窗分页操作

视窗分页切换 :
	- control + tab : 顺序切换
	- control + shift + tab : 反向切换

重新命名视窗分页 : 
	- cmd + opt + shift + T
	(可以一次性的使用 3 ~ 5 个分页搭配重新命名,可以更好的组织逻辑与思绪)

关闭视窗分页 : 
	- cmd + shift + W

代码导航

开头时曾介绍过的 emacs 类型快捷键 :

  • control + P : 向上
  • control + N : 向下
  • control + B : 向左
  • control + F : 向右
  • control + A : 到行首
  • control + E : 到行尾

Mac 电脑通用的光标移动功能 :

  • cmd + ↑ : 页面顶端
  • cmd + ↓ : 页面底端
  • cmd + ← : 文字开头
  • cmd + → : 文字结尾
  • opt + ← : 单字左侧
  • opt + → : 单字右侧
  • opt + ↑ : 上一段落 (不常用)
  • opt + ↓ : 下一段落 (不常用)

大范围的移动

  • cmd + L : 行数跳转
  • cmd + opt + L : 跳转到光标处
  • cmd + control + J : 跳转到定义处

文件项目 : 过滤器

  • control + 6 -> 输入函式名称

关联项目 : Callers & Callees

  • Callers : 哪些类别与方法调用此类别
  • Callees : 哪些类别与方法被此类别调用

特殊情况

特殊情况 01 : 版本控制的状态

点击右上角的双向箭头图示,会在当前画面中呈现版本比对的讯息 :
008.jump-edit

  • control + \ : 可以修改区块进行快速跳转
(版本比对要关闭,不然快捷键无法生效)

特殊情况 02 : 编译错误的状态

  • cmd + ' : 顺序跳转到下一个错误位置
  • cmd + shift + ' : 反向跳转到上一个错误位置

查询与替代功能

  • cmd + F : 开启查询面板
  • cmd + opt + F : 开启替代面板
  • cmd + E : 填入搜寻框
  • cmd + shift + E : 填入替代框
  • cmd + G : 下一笔结果
  • cmd + shift + G : 上一笔结果

使用选取文字搜寻

  • cmd + opt + E : 下一笔
  • cmd + opt + shift + E : 上一笔

以专案为范围

  • cmd + shift + f : 搜寻
  • cmd + opt + shift + f : 替代
同样可以使用填入文字的快捷键 :
	- cmd + E : 搜寻框
	- cmd + shift + E : 替代框

编辑

基础编辑

  • control + i : 选取代码排版
  • cmd + / : 光标代码注解

排版补充

  • cmd + ] : 向右缩排
  • cmd + [ : 向左缩排
  • cmd + opt + ] : 向上移动文字
  • cmd + opt + [ : 向下移动文字

注解补充

  • cmd + opt + / : 添加文档注解

代码编辑 emacs 类型

  • control + D : 反向删除字元
  • control + K : 删除到结尾文字
  • control + T : 交换光标两侧文字
目前查到 XCode 中,已知的 emacs 类型 :

• control + P : 向上
• control + N : 向下
• control + B : 向左
• control + F : 向右
• control + A : 到行首
• control + E : 到行尾
• control + L : 跳转到光标处
• control + D : 反向删除字元
• control + K : 删除到结尾文字
• control + T : 交换光标两侧文字

(之後若有发现更多的功能,会在此部分补充)

批量修改变数名称

三种操作

01. 滑鼠操作

  • 右键 > refactor > rename

02. 键盘操作

  • cmd + shift + A > rename

03. 在范围中编辑全部

  • cmd + control + E
该功能仅适用於单一档案快速修改,若已经被外部参照,要使用 rename 才会连动修改

XCode 智能补全

初始化方法补全

  • 选单 : Editor > Refactor > Generate Memberwise Initializer
(光标要定位於类别名称)

方法补全

  • ESC : 手动显示提示选单
  • control + . : 顺序切换
  • control + shift + . : 反向切换
  • control + / : 选择确认

修正连续技

  • cmd + ' : 跳转到错误位置
  • cmd + opt + control + F : 编辑器补全修正

多行编辑功能

三种操作

  1. opt 按住 + 滑鼠拖移
  2. control + shift + ↑ / ↓
  3. control + shift + 滑鼠点击

执行与除错

执行

  • cmd + R : 执行程序
  • cmd + B : 编译程序
  • cmd + . : 停止程序
  • cmd + shift + K : 清除系统资源

除错

  • cmd + \ : 设置中断点
  • cmd + Y : 开关除错模式

Debug 模式的部份,我使用的机率没有很高,那为什麽要说明这两项功能 ?

因为我查到的资料中有些开发者,由於 XCode 没有书签功能,所以会使用这个中断点来替代使用
我个人是觉得如果能够熟练的使用「分页与视窗」功能,使用中断点来替代,看起来就没有那麽的必要。

009.debug


自定义

按键「 cmd + , 」打开设置後 「 Key bindings 」

个人配置了6 + 1 的快捷键,来辅助开发。


「六项」已经有的功能,没有预设成快捷键 6

页面上下移动

  • control + U : 页面向上
  • control + J : 页面向下

区块选取文字

  • 选取单字 : control + C
  • 选取单行 : cmd + shift +

重新命名

  • cmd + opt + 6

删除单行

  • control + S

「一项」没有的功能,修改配置扩增快捷键 +1

XCode 配置档路径

/Applications/Xcode.app/Contents/Frameworks/IDEKit.framework/Resources/IDETextKeyBindingSet.plist

权限调整指令

sudo chmod 666 /Applications/Xcode.app/Contents/Frameworks/IDEKit.framework/Resources/IDETextKeyBindingSet.plist
sudo chmod 777 /Applications/Xcode.app/Contents/Frameworks/IDEKit.framework/Resources/

编辑配置档

vim /Applications/Xcode.app/Contents/Frameworks/IDEKit.framework/Resources/IDETextKeyBindingSet.plist

(也可以使用 open 指令,用 XCode 介面编辑,或者直接进入到档案目录用其他编辑器修改)

复制指令

selectLine:, copy:, moveToEndOfLine:, insertNewline:, paste:, deleteBackward: 

修改後的配置内容

<key>EnoxsIDE</key>
<dict>
    <key>Duplicate Line</key>
	<string>selectLine:, copy:, moveToEndOfLine:, insertNewline:, paste:, deleteBackward:</string>
</dict>

重启後,设置

  • cmd + D : 复制单行
原本的预设中也有一个 Duplicate 的功能「cmd + D」
只是在编辑器中试不出来,所以只好把这个快捷键,移到新配置的 Duplicate Line

010.duplicate-line


结尾 : 时间与耐心

上述从基础面板、档案导航、分页视窗、代码导航、代码编辑、执行除错以及最後的自定义功能。

你应该已经知道 XCode 可以做的事情 远比想像中的多更多。

不过熟悉开发工具的使用是开发中**「可选」的条件,却并不是「必要」的条件**。


例如 : 我最近正在开发的 iOS App Side Project

011.MarkAccount

在 XVim2 的插件发生问题以後,只知晓左右侧与下方面板开关以及注解、排版、执行,

这六个快捷键的情况下,就已经陆续的完成将近七至八成的内容。

要完整的开发一个 iOS App 熟悉工具的使用只能锦上添花,但并不能完全替代所有必备的知识。

012.Knowledge

这些就只能透过足够多的「时间」与「耐心」以及「正确的方法」(Gamma Ray 软件工作室) 逐步累积知识。

我相信,最终肯定可以到达 愉快写 Code 的程度 !


参考资料

像使用Vim 一样使用Xcode

https://juejin.cn/post/6844903565614383118

Xcode常用快捷键小结

https://www.jianshu.com/p/3d7cc7eaeb1e

Xcode 快捷键整理

https://medium.com/@stephyang/xcode-%E5%BF%AB%E6%8D%B7%E9%8D%B5%E6%95%B4%E7%90%86-ba653d0eff7e

iOS 开发者 13 倍速技巧

https://www.notion.so/iOS-13-af1abc1bd9b440f5a67fdc1c70d529ab

13 种实用 Xcode Shortcuts (快捷键)

https://www.appcoda.com.tw/xcode-shortcuts/


<<:  进击的软件工程师之路-软件战斗营 第六周

>>:  暴力攻击(Brute Force Attack)

系统弱点扫描工具-Tenable Nessus(下)

今天来跟大家介绍弱点扫描的基本操作 启动我们的Nessus後 请记得先到Settings确认目前的P...

Day26 Gin with Logger

What is Log in backend Log顾名思义就是纪录,通常在Backend当中会将可...

G Suite 教育版更名为 Google Workspace for Education,并取消无限制储存空间限制至 100 TB

先前 Google 取消无限制文件云端空间与无限制相簿空间後,大家哀鸿遍野。而原本不受影响的 GSu...

IT铁人DAY 21-Facade 外观模式

  今天要介绍的模式是属於结构型模式的一种,我个人觉得他还蛮简单的,有点像是程序码中的主要窗口,现在...

JS30 Day 27 - Click and Drag学习笔记

这次的功能主要是做画面的一个点击拖曳,当点击後往左拖曳画面会往右跑,反之。 主要之架构。 <...