关闭最后一个标签页时vscode保持窗口打开需将workbench.editor.closeemptygroups设为false;该设置控制编辑器组为空时是否关闭窗口,与files.hotexit和window.restorewindows无关。

关闭最后一个标签页时 VSCode 仍保持窗口打开
默认行为是关掉最后一个 tab 就退出整个 VSCode,这很反直觉——尤其你只是想清空编辑区、留着窗口继续用。根本原因是 VSCode 把「无编辑器」等同于「无工作状态」,但实际你可能正等着拖新文件进来,或刚删完文件想立刻新建。
解决方法只有一处配置,改完立刻生效:
- 打开设置(
Ctrl+,或Cmd+,),搜workbench.editor.closeEmptyGroups - 把它设为
false(默认是true) - 不需要重启,也不用改
settings.json—— 但如果你习惯手动编辑,对应项就是:"workbench.editor.closeEmptyGroups": false
为什么不是改 files.hotExit 或 window.restoreWindows
这两个常被误认相关,其实完全无关:files.hotExit 控制的是崩溃/强制退出时是否保存未保存的文件;window.restoreWindows 决定启动时要不要恢复上次的窗口布局。它们都不影响「主动关闭最后一个 tab」这个动作的行为。
真正管这个逻辑的只有 workbench.editor.closeEmptyGroups —— 它决定「编辑器组(editor group)变空后是否连带关闭整个窗口」。把值设为 false,VSCode 就会保留空窗口,等你下一步操作。
Mac 上 Command+W 关闭标签页后窗口闪退?检查系统级快捷键冲突
即使配置正确,部分 Mac 用户仍遇到:按 Cmd+W 关掉最后一个 tab,VSCode 窗口瞬间消失。这不是 VSCode 的 bug,而是 macOS 把 Cmd+W 同时发给了当前应用和系统级「关闭窗口」指令。
- 进「系统设置 → 键盘 → 快捷键 → 应用快捷键」
- 点左下角
+,应用选Visual Studio Code - 菜单标题填
Close Window,快捷键设成空(即禁用它) - VSCode 内部的
Cmd+W就能只触发标签页关闭,不再被系统截胡
多窗口场景下,每个窗口独立受控
workbench.editor.closeEmptyGroups 是全局设置,但效果按窗口独立计算。比如你开了两个 VSCode 窗口 A 和 B,A 关掉最后一个 tab 后保持打开,B 同样操作也保持打开——不会因为 A 还开着,B 就自动退出。
这点容易被忽略:它不看「整个 VSCode 进程还有几个窗口」,只看「当前窗口里有没有 editor group 剩余」。所以如果你习惯多窗口工作流,这个配置依然安全可靠,不用额外处理。
真正的麻烦点在于:某些插件(比如旧版 Project Manager)会监听窗口关闭事件并触发清理逻辑,一旦你禁用自动退出,它们可能卡在「等待窗口关闭」的状态。遇到异常行为,先临时禁用插件再验证配置是否真生效。











