一篇文章让你透彻认识 Mac 应用切换和窗口切换的逻辑
date
Dec 24, 2022
slug
mac-switch-app-or-windows
status
Published
tags
Mac
Productivity
数码
MacBook
type
Post
Created time
Dec 24, 2022 05:55 PM
summary
MacBook 的窗口管理一言难尽,本文尝试尽可能系统的梳理 Mac 系统中窗口切换,应用切换的的操作逻辑,本文还分享了使用 Mac 系统时的小技巧
应用的两种打开类型全屏和最大化空间 Spaces操作定义和介绍窗口切换和全屏切换窗口切窗口窗口切全屏全屏切窗口全屏切全屏结论全屏应用不利于和其他桌面 app 的交互相邻的全屏应用方便交互 空间切换 三指滑动同一桌面下的多应用方便交互 程序坞 应用切换同一桌面同 app 的多窗口方便交互 窗口切换 窗口暴露同一桌面下不同app的不同窗口则是结合上面两步的排列组合,共有四种办法。macOS 的应用切换的两个特色空间切换 左右滑动 ~多桌面的使用调度中心是失败的设计通过 dock 切换是不通用的如果你想像 Windows 一样的操作逻辑来使用 Mac,只使用应用窗口最大化,不要使用应用全屏隐藏和最小化调度中心和程序坞不要使用隐藏和最小化macOS 的窗口管理没有有一个通用切换办法切换应用切换窗口自然的逻辑References and useful links同类博客Appendix A 其他用户的使用分享Appendix B 窗口切换尝试过的软件Appendix C 一次操作记录
macOS 精美的硬件设计,系统流畅的动画吸引着我,她是美的代表。但在使用 MacBook 处理多项复杂任务时,总有一种无力感。我使用 Windows 超过十年,使用 MacBook 超过五年。Windows 一直是我的主力电脑,原因非常多,其中最主要的是我喜欢操作台式机的感觉,厚实的大机箱可以自定义更强的性能,同时也有充分的散热空间,总之就是“耐操”。MacBook这边就显得稍微金贵了些,除了价格因素,笔记本轻薄的机身,13寸的屏幕操作起来也很费眼。除去鼠标和触控板的差异,两个系统的窗口管理和应用管理方式也不相同,其中有一些管理方式你并不能在两个系统之间找到类似的地方。因此深入了解macOS的应用窗口管理方式以及应用切换方式是必要的。
本文尝试尽可能全面的梳理应用窗口的切换方式,以及各个切换方式的组合,全面梳理所有切换方式多时间复杂度,比较macOS 和 Windows 系统到底在窗口切换方式和效率上有何不同。
本文分为三部分。第一部分介绍macOS应用中的基础知识和操作定义,着重介绍和Windows 中差异的应用打开类型,比如全屏和最大化;定义了所有本文设计到的操作以及操作的实现方式。第二部分将讨论macOS两种应用打开类型的四种切换场景,包括窗口切窗口,窗口切全屏,全屏切窗口和全屏切全屏,详细描述各个场景下可行的操作方式以及各个操作方式的特点。第三部分是本文结论。
应用的两种打开类型
macOS 中应用有两种打开类型,全屏界面和窗口界面。
全屏界面,full-screen,像是一个 iPad 界面,也可以理解成专注模式。在全屏界面你只能看到这个app 本身,上方的菜单栏和下方的程序坞都被隐藏起来了。你可以在这里找到苹果官方对于使用全屏应用的介绍
窗口界面,windows,这个和 Windows 系统的窗口是一个概念,窗口可以叠放。
全屏和最大化
全屏 full-screen 是 Mac 上的一种应用打开方式。Windows 上没有相同或类似的操作。
最大化 maximum 指的是应用窗口最大化,仍然是窗口,只不过是最大的窗口。和 Windows 上的最大化相同。
空间 Spaces
空间是一个工作区域,每一个空间都会在
调度中心 的上方显示预览图。空间有两种形式,一种是桌面,在桌面中可以打开多个应用的窗口。打开电脑后默认的界面是桌面 1,你也可以创建多个这样的桌面,桌面 2,桌面 3 等。另一种形式是上面提到的全屏应用,或者是全屏应用的分屏组合。
因此从系统级别来说,全屏应用和桌面的地位相等,因为一个桌面中可以包含多个窗口应用,桌面的地位是大于窗口应用的,我们可以说全屏应用的系统级别大于窗口应用的系统级别(而不是它们两相等)。
操作定义和介绍
本文会设计到 6 种系统功能。操作系统版本:macOS 13.1, Windows 11
功能名称 | 当前场景 | 触控板实现1 | 触控板实现2 | 键盘实现1 | 键盘实现2 | 备注 |
调度中心
mission control | 通用 | 三指上滑(四指) | 右上角触发角 | control + ⬆️ | 功能键 F3 | 默认从主桌面进入调度中心是不显示上方预览图的(之前的MacOS系统显示,后来改掉了),只有光标移动到上方时,才显示预览;因此只有右上角触发角显示预览。从全屏应用进入调度中心则任何操作都显示上方预览 |
窗口暴露
app expose
显示本应用所有窗口界面 | 只能在桌面使用 | 三指下滑(光标在目标应用窗口,或者光标在dock栏目标应用图标) | 双指两次轻触(tap)dock栏目标应用图标 | control + ⬇️ | 调出 app expose 的任何一种操作方式都需要主桌面完成(不能在全屏应用中调出 app expose ) | |
窗口切换
迭代本应用的所有窗口界面 | 只能在桌面使用 | command + ` | 只有键盘方式,没有触控板方式 | |||
空间切换
桌面或全屏应用切换 | 通用 | 三指左右滑动 | 进入调度中心,从上方空间预览图中选择 O(3) | control + ⬅️ / ➡️ | 系统没有快捷键可以直达某个空间。系统默认有快捷键可以直达桌面, control + 1 跳转至桌面 1,control + 2 跳转至桌面 2。 | |
程序坞
调出 Dock 栏 | 通用 | 指针移到屏幕底部 | fn + A | control + F3 | 在桌面时可以让dock常驻 | |
应用切换
切换到你最近使用的一个 app | command + tab | 无视该应用是窗口还是全屏,对于打开多窗口或者多全屏的应用,会切到你最近一次使用的界面(例如,你最近使用了窗口化的Word A,你切回Word的时候回到Word A;你最后使用了全屏化的Word B,你切回Word的时候回到Word B)本功能仅有键盘实现 |
Note


- 在全屏应用中可以四指聚拢进入
launchpad,不能四指发散显示桌面(四指发散只可以在桌面使用)。
窗口切换和全屏切换
接下来我们聊窗户,全屏之间的切换方式。两种状态,当前状态,下一步状态,构成以下四种组合。每一种操作方式都有时间复杂度分析,即 big O,最大操作数。比如通过触控板完成从 app A 切换到 app B 的操作,时间复杂度为 O(2),移动光标到
dock 上的 app B 图标,点击,一共两个操作。窗口切窗口
- 点击
程序坞中应用图标切换到应用,如果该应用只有一个窗口,切换完成。如果该应用有多个窗口,然后窗口切换O(2) + O(W) W是该应用的窗口数量
- 点击
程序坞中应用图标切换到应用,如果该应用只有一个窗口,切换完成。如果该应用有多个窗口,然后窗口暴露O(5)
- 光标移动到
程序坞中目标应用的 logo,进入窗口暴露,选择窗口。 O(4)
- 进入
调度中心,在中间的预览图中寻找(前提是调度中心设置为所有窗口平铺)
- 推荐方法 3, 是和 Windows 的操作逻辑一样,会比 Windows 多一个进入
app expose的操作。先切换应用,再切换窗口的逻辑。
- 方法 1 和 2 的优点在于如果你之前已经切到该窗口一次,那么点击图标后,上一次的窗口仍然在最上层。
- 方法 5 在窗口多时不可用。
窗口切全屏
- 点击
程序坞中应用图标 O(2)
- 使用
空间切换向右滑 (时间复杂度取决于当前空间和目标空间的距离,两个空间相邻时最短O(1),最远时最大 O(15),最多有16个空间。)
- 使用
应用切换(时间复杂度取决于你有多久没用过目标应用,如果刚用过O(1),如果很长时间没用过 O(n), n 为打开的应用数量)
- 进入
调度中心,从上方空间缩略图中选择 O(3)
- 方法 1 要求当且仅当目标应用只有一个全屏界面,如果还有窗口界面或者其他全屏界面就切不过去了。因此通过程序坞切换不是一个通用的办法,或者窗口和全屏不要混用。
- 推荐方法 2 和方法 4 结合来使用
全屏切窗口
- 进入
调度中心,从中间预览图中选择应用,然后窗口切换O(3) + O(W),W = 该应用窗口数量 - 1。
- 进入
调度中心,从中间预览图中选择应用,然后app expose当设置为所有窗口平铺 O(3), 当设置为应用窗口集合为组应用窗口集合为组 O(6)
- 进入
调度中心,从程序坞中选择应用,然后窗口切换O(3) + O(W)
- 触控板调出
程序坞,选择应用图标,然后窗口切换O(3) + O(W)
- 使用
空间切换向左滑到目标桌面,在程序坞中选择应用,然后窗口切换。时间复杂度取决于当前空间和目标空间的距离,最短O(3) + O (W),最大 O(17) + O (W),最多有16个空间。
- 用
应用切换时间复杂度取决于你有多久没用过目标应用,如果刚用过O(1),如果很长时间没用过O(n), n = 打开的应用数量
- 方法 1 不是很好,因为调度中心中间的 app 预览图位置不是固定的,找起来费劲;但优点是预览图面积远大于
dock中的图标,在窗口数量少时尤其好用方法 2 O(3) 并不一定不 O (5) 快,虽然操作步骤少,从众多窗口中寻找你要的那个可能会很费时。建议设置为应用窗口集合为组
- 方法 2 O(3) 并不一定不 O (5) 快,虽然操作步骤少,从众多窗口中寻找你要的那个可能会很费时。建议设置为应用窗口集合为组
- 方法 3 和方法 4 非常像,本质都是从
程序坞来切换,区别是一种是光标下移,等待一点延时,dock栏上来,另一种是三指上滑,我觉得更迅速更稳定。dock栏中程序位置是固定的,这点非常利于切换程序。时间复杂度固定 O(3)
- 包含
窗口切换的方法只能由键盘完成,我个人不考虑,但确实是这个场景下效率最高的方式。唯一留给我的只有方法 2,恒定 O(6)
- 滑永远不慢。如果你要切换的 app 窗口已经在最上层了,也就是说之前你切过去一次了,那么这个任务就变成了 全屏切全屏,是个空间切换问题,滑~吧~
全屏切全屏
也就是空间切空间,三指左右滑动切换,三指上滑选择
空间切换O(1) ~ O(S), S = 空间数量 - 1
- 调出
调度中心,在上方预览图中选择 恒定O(3)
应用切换时间复杂度取决于你有多久没用过目标应用,如果刚用过O(1),如果很长时间没用过O(n), n = 打开的应用数量
- 方法 1 和 2 结合来使用,全屏数量少时 ≤ 5,滑动效率很高,全屏数量多时,进入调度中心点选。
结论
全屏应用不利于和其他桌面 app 的交互
分两种情况,1. 如果目标 app 只有一个窗口,最快为 O(3),进入调度中心,光标移动到app图标,点击。2. 如果目标 app 有多个窗口,通过触控板操作会是 O(6)
如果使用 Windows,通过鼠标操作,情况1会是 O(2),情况2会是 O(3)。这就是为什么macOS 窗口管理做的一塌糊度,尤其是单应用多窗口场景,时间复杂度比 Windows 直接翻倍。
在这个场景下和 iOS 系统做类比,因为 iOS 不允许应用双开,每个应用只有一个全屏界面,避免了单应用多窗口的发生。
相邻的全屏应用方便交互 空间切换 三指滑动
本操作可以做到 O(1),是所有操作里效率最高的,并且不需要移动光标,随意滑动就行。这应该是Mac最出彩的地方。效率等同于
应用切换 command + tab 切换上一个应用同一桌面下的多应用方便交互 程序坞 应用切换
通过程序坞
app expose是O(4),比 Windows 的O(3)慢一点点同一桌面同 app 的多窗口方便交互 窗口切换 窗口暴露
窗口的操作涉及到两种,其中
窗口切换 只可以由键盘完成,效率非常高,你可以把切换过程当作窗口的 1:1 预览图,直到你看到你想要的那个窗口的预览图,再松掉 command 。另一种窗口切换的方式则是用触控板,三指下滑进入
窗口暴露 ,预览图是比较大的,因为只显示本应用的窗口而不是所有应用的窗口。同一桌面下不同app的不同窗口则是结合上面两步的排列组合,共有四种办法。
程序坞 → 窗口切换 程序坞 → 窗口暴露 应用切换 → 窗口切换 应用切换 → 窗口暴露其中恒定高效的是O4,移动光标到app,三指下滑进入窗口暴露,移动光标选择中型预览图,点击。win可以做到O3。移动光标到app,通过预览图选择缩略图,点击。
macOS 的应用切换的两个特色
空间切换 左右滑动 ~
当之无愧的macOS灵魂,不涉及操作光标,尤其是触控板本身不擅长光标精细操作,滑动很好的规避了这个缺点。
多桌面的使用
调度中心是失败的设计
预览图的位置不固定,如果你设置为窗口平铺,不再显示窗口名称和应用图标,这一点让我费解。其实参考Mac中 safari 的设计,两指收缩的视图,会显示网站的icon和名称,寻找网页就不会很困难。当窗口数量大于 10 时,调度中心基本没用了,找起来太费劲。比 Windows 的
alt-tab 更混乱,Windows 至少保证显示窗口名称和图标。通过 dock 切换是不通用的
目标应用只有全屏,有时回跳到桌面一次,再次点击图标才会跳到这个全屏应用。当目标应用有 2个全屏界面,你点击
dock中的图标会跳到其中一个全屏界面,永远跳不到另一个全屏界面如果你想像 Windows 一样的操作逻辑来使用 Mac,只使用应用窗口最大化,不要使用应用全屏
不要担心不使用全屏会不会太特立独行,有很多人是这么使用的。
隐藏和最小化
隐藏
command + h 和最小化 command + m 这两个操作很像。都是一种减少的感觉,让你的桌面更干净。隐藏是作用于 app ,这个 app 的所有窗口都会被隐藏。最小化是作用于 app 中的当前窗口,这个 app 的其他窗口不受影响。从这个角度来说,隐藏具有更高的系统操作级别。
隐藏后,使用
app expose 无法显示应用的窗口。最小化后,使用 app expose无法显示应用的窗口,但会在下方以更小的缩略图的形式显示当前最小化的窗口。从这个角度来说,隐藏就是不用了,最小化还 “可能” 用。隐藏后,使用
应用切换 command + tab , 所有隐藏窗口会切回来。最小化后,使用应用切换 command + tab ,最小化的窗口不会切回来。从这个角度来说,隐藏还可能用,最小化就是不用了。与 app expose 的结果相反。看看这操作系统的设计,amazing!使用
调度中心 ,隐藏和最小化都不会在中间预览图中出现最小化有自己独特的切回方式,从
dock 最右侧点击对应窗口切回。这一点对于对于那些 “我只使用调度中心,dock 一直是隐藏的” 的人是很好的反驳,因为你必须从 dock 中取回最小化的窗口。除非你不用,但不用又有不用的问题。因为最小化是系统窗口管理的最基本操作,如果可以不使用最小化同时不影响操作系统,那么最小化这个功能就是冗余的。应该没有人操作 Windows 时不使用最小化或者最大化这样的功能吧。此外,最小化的窗口默认是收缩到
dock 右侧,这一点很糟糕。首先右侧的图标位置不是固定的,取决于窗口最小化的先后顺序。其次,当你想要找回你最小化的窗口,你必须清楚目标窗口是被最小化了,你要去 dock 右侧寻找,而无法通过任何其他 调度中心 app expose 等操作找的。这一点和找回全屏应用非常类似,在那里你必须清楚你的目的地是某一个全屏界面。调度中心和程序坞
调度中心和程序坞有点重复,它们都可以用来切换应用,都可以使用触控板或者键盘完成。
调度中心效率更低,相比较于程序坞,预览窗口的位置不是固定的。
调度中心有两种设置,集合同应用的所有窗口或者所有窗口平铺。如果设置为前者,很好通过应用 logo 和名字来辨认,但无法选择具体的窗口,还需要进一步使用
app expose 或者 窗口切换 来选择具体窗口;如果设置为所有窗口平铺,我认为很难辨识这是哪个应用以及这是这个应用的哪个窗口,不可用。通过程序坞切换也同样棘手。当你开了 4 个 word,2 个是窗口,2 个全屏。这时候你从其他应用切换 word 时,如果通过程序坞,你不知道你会去窗口还是全屏。
如果去了窗口,你发现这个不是你想要的窗口,这时候你通过
app expose 或者 迭代本应用所有窗口界面 选择另一个 窗口。如果你的目的地是全屏,你需要再次点击 word 图标。如果去了全屏,如果这不是你想要的那个全屏 word,你要通过左右滑或者调度中心最上方的全屏预览来选择。
哇,真麻烦。也就是说你必须要清楚你要去的 word 是个窗口还是全屏了。这并不是切换应用时的自然逻辑。我在 notion A,我想去 word C,我应该能准确定位到 word 在哪里,以及快速辨认我要的那个 word 界面。
不要使用隐藏和最小化
这两个设计的都有问题,隐藏后
窗口暴露也失效了macOS 的窗口管理没有有一个通用切换办法
Mac 是把窗口应用和全屏应用分开管理的。严格来说,多桌面多全屏的切换有个前提是你知道你想去的地方是一个桌面还是一个全屏,这就有点奇怪。当你在app A, 想去 app B,你还要清楚这个是全屏还是窗口?
切换桌面上的窗口? 窗口暴露,程序坞,窗口切换
切换全屏应用或者其他桌面?左右滑或者
切换到最小化的程序?程序坞最右侧
看到这里回感觉很麻烦,因为当你想切换到一个app时,你要知道它是窗口还是全屏。切窗口和切全屏的办法不一样。
如果应用只窗口,那么app expose 或者 command + ` 就可以切到
如果应用是全屏,那么左右滑,或者进入mission control在上方点选
切换应用切换窗口自然的逻辑
通过icon找到应用,通过标题或者预览图确定窗口。icon位置要固定。
References and useful links
同类博客
Appendix A 其他用户的使用分享
- 我没有安装任何软件,使用 mac 的多桌面,设置 10 个桌面,每个软件放到不同的桌面,快捷键直接切换桌面即可,指哪打哪。切换软件不需要做任何思考和眼睛识别

Appendix B 窗口切换尝试过的软件
- Dockview for mac
- Dockmate
- AltTab
- manico
- thor
- totalspaces3
- jitouch
- bettertouchtool
- multitouch
- contexts
Appendix C 一次操作记录

使用键盘
使用command+tab 切到全屏应用需要在设置中选中选到app时切到该空间。
切回到全屏应用:一直往右滑;四指上滑然后点选;control + ➡️;command + tab
使用键盘有几个问题
同一个应用开多个窗口,其中有全屏窗口,这时候 command + tab 只能切到窗口,无法切到全屏的窗口。
使用触控板
- 不会用键盘快捷键进入调度中心mission control (因为不能用键盘在调度中心中选择应用,快捷键占用两个手,左边的control和右手的向上箭头
- 也就是说使用三指向上进入调度中心。 (也可以左手使用最上排的功能键)
- 进入调度中心后的看到画面1

- 调度中心里无法使用键盘来选择不同的应用,因此这里只能使用触控板。所有的应用在这里显示了两遍。 第一遍是在下方的dock栏,所有打开的应用在这里都出现了。第二遍是上方缩略图+中间大面积的预览。上方缩略图显示了不同的桌面以及全屏的应用,中间大块的预览是主桌面的窗口应用。如果选择不同的全屏应用,就在上方的缩略图中选择,如果选择窗口应用,在预览图中选。
这里没有谈多桌面,问题会复杂化,比如进入调度中心后看不到桌面2桌面3的应用,你必须从桌面2进入调度中心才可以看到桌面2的窗口应用有哪些。此外,在桌面1使用app expose时,显示了所有桌面的该app的窗口,你点击后可能进入了不同的桌面,也就是说不同桌面的相同app的窗口不能一样。
- 如果选择了上方的全屏应用,这时候进入该全屏窗口,选择结束。如果选择了单窗口的应用,选择结束。如果选择了多窗口的应用,这时候需要进行多窗口选择。使用快捷键 control + ⬇️ (如果这里使用快捷键,会有点割裂) 或者 三指下滑进入 app expose 看图二

- 在app expose 画面后,使用触控板点击来选择窗口。(使用键盘则是使用方向键切换,按return选择。有两步,而且右手需要向上移动)





