VSCode如何禁止自动打开上次未关闭的文件和工程
要彻底禁止VSCode启动时自动恢复文件或工程,需将window.restoreWindows设为none,仅关闭Files:HotExit无效。该设置分为all、folders和none三层,仅none能完全禁用恢复。若设置后问题依旧,可尝试完全退出VSCode并删除用户数据目录下的storage.json缓存文件。此外,注意workbench.start
直接改 window.restoreWindows 为 none,其他设置不配齐也大概率还会弹出 Untitled-1 或旧项目——这不是 bug,是 VSCode 会话恢复机制的分层设计。
为什么改了 Files: Hot Exit 还没用
很多人第一步就踩坑了:只关了 Files: Hot Exit,以为万事大吉。其实,这两个设置管的是完全不同的环节。Files: Hot Exit 控制的是「关窗口时要不要提示保存」,而真正决定「开窗口时恢复什么」的,是 window.restoreWindows。简单来说:
Files: Hot Exit设为off:关窗口前,它会强制你保存或丢弃所有未保存的文件。window.restoreWindows设为none:启动时,它才会彻底放弃还原任何窗口、标签页、文件夹,包括烦人的 Untitled 文件。
所以,不改后者,哪怕你每次手动关掉所有标签,下次一开 VSCode,它照样会把上次那个 Untitled-1 塞给你。
window.restoreWindows 的三个选项实际效果
这个设置不是简单的“开/关”开关,而是一个三层行为策略,理解错了就容易留尾巴:
all:恢复所有窗口,包括纯空窗口、欢迎页、以及没关联文件夹的编辑器。folders:只恢复那些带文件夹或工作区的窗口,但依然会还原其中所有打开的标签页(Untitled-1也包含在内)。none:彻底跳过整个会话恢复流程,启动后要么显示欢迎页,要么是空白窗口(取决于workbench.startupEditor的设置)。
结论很明确:要彻底清净,必须选 none。别信“folders 就够了”,它对 Untitled 标签页毫无免疫力。
顺手清理残留缓存,避免设置失效
设置对了,问题还在?这种情况虽然少见,但一旦碰上就特别顽固。问题很可能出在本地缓存上。VSCode 的窗口状态其实记录在 storage.json 这个文件里,而不是每次启动都实时读取配置项。所以,正确的操作顺序是:
- 完全退出 VSCode 所有进程(macOS 用户注意 Dock 图标,Windows 用户看看任务管理器里还有没有
Code.exe)。 - 找到并删除用户数据目录下的缓存文件:
- macOS/Linux:
~/.vscode/storage.json - Windows:
%APPDATA%\Code\storage.json
- macOS/Linux:
- 如果还不放心,可以一并清空
workspaces子目录(例如 Windows 下的%APPDATA%\Code\Workspaces),但别动整个Code目录。
删除后重启 VSCode,它会自动重建一个干净的 storage 文件。这步操作常被忽略,但对于解决那些反复复现的“幽灵”恢复问题,往往能起到关键作用。
额外两个容易被忽略的干扰项
VSCode 的启动行为是多个设置协同的结果,有些看似无关的选项,实则和恢复逻辑暗中耦合:
workbench.startupEditor:这个设置决定了启动时显示什么。如果它被设为welcomePage或readme,可能会在视觉上干扰你对window.restoreWindows: none效果的判断。为了保险起见,可以将其也设为none。workbench.editor.reopenLastEditorOnStart:这个设置控制的是单个编辑器是否恢复上次的光标位置,它不影响窗口级别的恢复。但如果设为true,在某些特定场景或插件环境下,可能会意外触发标签页的重建,造成困扰。
说到底,VSCode 的会话恢复机制是一个由 window.restoreWindows 主控、缓存文件落地、再叠加其他编辑器策略协同生效的复合系统。漏掉其中任何一层,都可能让你陷入“明明改了设置,怎么还不行”的困惑。按照上面的步骤逐一排查,才能真正实现“开机即静”的效果。


































