简短回答:macOS 没有相关开关,但你可以在“系统设置”中把“退出”重新分配到一个你绝不会不小心按到的快捷键上。
步骤如下,还有为什么偏偏是 Q 这个键,以及该如何处理你已经丢失的标签页。这里的一切同样适用于 Cmd W,那才是你原本真正想按的那个键。
Command Q 会退出整个 App。每个窗口、每个标签页,全部一起,立即关闭,除非有文稿存在未存储的改动,否则不会有任何确认。而紧挨着它的 Command W,只会关闭当前标签页,这个区别正是让人栽跟头的地方。
不能。退出一个 App 没有撤销功能,这是对大多数人来到这里想问的问题最诚实的回答。一旦 App 退出,macOS 就没有任何东西可以恢复了。你能做的是找回其中一部分:
找不回来的是输入到网页表单里的内容、未存储的草稿文件,以及你原本 打开的确切窗口排布。这才是大家真正在意的部分,也是为什么阻止退出 比任何恢复技巧都更有价值。
看看这些按键的位置。Q 正好在 A 的正上方,紧挨着 W 的左边。Mac 上使用最频繁的三个快捷键就集中在这一块:
其中一个和另外两个相比只差一步之遥,但只有一个会造成灾难性后果。差几毫米没按到 W,Safari 关闭的就不是一个标签页,而是一切:每个窗口、每个标签页,以及你填了一半的任何表单。
不会有任何警告,也没有撤销功能。这就是全部问题所在,而这是 Apple 从未重新考虑过的一项设计决定。
你无法全局关闭 Cmd Q,但可以按 App 逐个挪走它,让这个危险的快捷键不再压在你的小指下面。
Quit Safari。Cmd Q 在该 App 中现在不会有任何作用。菜单会更新显示新的组合键。
有两个地方容易让人失手。菜单标题必须逐字符匹配,包括应用名称,所以应该是“Quit Safari”而不是“Quit”。而且你需要为每一个想要保护的 App 都重复这个操作,这正是这种方法最大的弱点。
无论如何都值得这样做,因为它能把一场灾难变成一次小麻烦。
在 Safari 中,打开“设置”,然后“通用”,把“Safari 打开方式”设为“上次退出时的所有窗口”。意外退出后重新打开,就能找回每个窗口和标签页。
它无法找回你输入到表单里的文字,所以它是一张安全网,而不是一种修复。
两者都已自带 Safari 所缺少的那项保护。
这些浏览器都各自独立地加上了这项功能,说明这个抱怨有多么普遍。Safari 才是例外。
另一种办法是让 Command Q 需要明确意图,通过添加一个短暂的延迟,让轻点毫无反应,只有有意按住才会退出。这能一次性覆盖所有 App,而不用逐个设置。
有好几款工具能做到这一点,包括免费的。这是一种正确形式的解决方案:你保留自己已经熟悉的快捷键,它只是不再因为轻轻一碰就触发。
Still Dock,锁定 Mac Dock 的这款 App,把退出保护做成了菜单栏里和 Dock 锁定并列的一个开关,因此同一款能阻止你的 Dock 意外改变的 App,也能阻止你的 App 被意外关闭。同样的思路,用在了 macOS 让你能一键摧毁的另一样东西上。在其他人使用的 Mac 上,这个开关也可以从你的手机上切换:参见从手机阻止共享 Mac 上的 App 被 Cmd Q 退出。
使用不止一块屏幕?Dock 也会在它们之间跳动,这是另一个问题,有它自己的解决办法:如何将 Mac Dock 固定在单块屏幕上。
在“系统设置”里没有。“App 快捷键”面板是按应用单独工作的,所以要实现全局改动,需要一个介于按键和 App 之间的实用工具。
通常是三种情况之一。这个 App 正忙或没有响应,因此从未收到这个按键,此时从苹果菜单强制退出是唯一的出路。或者某份文稿有未存储的改动,一个存储对话框正藏在另一个窗口后面等待。又或者这个快捷键已经被重新分配了,可能是你自己在“键盘快捷键”里改的,也可能是某个保护它的 App 改的,这种情况下“文件”菜单会显示“退出”现在绑定的是什么。
不会。退出功能依然有效,可以从菜单,也可以用你的新快捷键。你只是挪动了这个快捷键,并没有移除这个命令。
macOS 会按菜单项的字面文字匹配“App 快捷键”。“Quit Safari”和“Quit”是不同的字符串,一旦不匹配就什么都不会发生,也没有任何错误提示告诉你原因。
在使用标准文稿模型的 App 中,会的,你会看到存储提示。浏览器和许多其他 App 只会直接关闭,这正是浏览器这种情况最让人头疼的原因。
重新打开该 App 并查看它的“历史记录”菜单,在 Safari 中则使用“历史记录”,然后选择“重新打开上次访问的所有窗口”。输入到表单里的文字通常已经无法恢复。
Chrome 和 Firefox 都自带一项针对此问题的保护,开启它不花一分钱。参见阻止 ⌘Q 退出 Chrome、Safari 和 Firefox。