必须将window.restorewindows设为none才能彻底禁用恢复,因其控制启动时是否还原窗口、标签页及untitled文件,而files:hotexit仅影响关闭时保存提示;还需清理storage.json缓存并确保workbench.startupeditor不干扰。

直接改 window.restoreWindows 为 none,其他设置不配齐也大概率还会弹出 Untitled-1 或旧项目——这不是 bug,是 VSCode 会话恢复机制的分层设计。
为什么改了 Files: Hot Exit 还没用
很多人只关了 Files: Hot Exit,以为就能阻止恢复,但这是错的。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)或空白窗口
要彻底安静,必须选 none。别信“folders 就够了”,它对 Untitled 标签页毫无免疫力。
顺手清理残留缓存,避免设置失效
即使设置正确,极少数情况下仍顽固恢复,大概率是本地缓存损坏。VSCode 把窗口状态记在 storage.json 里,不是靠配置项实时读取:
- 退出 VSCode 全进程(macOS 检查 Dock 图标是否消失,Windows 看任务管理器有没有
Code.exe) - 删除用户数据中的缓存文件:
• macOS/Linux:~/.vscode/storage.json
• Windows:%APPDATA%\Code\storage.json - 不要删整个
Code目录,只动这个文件;workspaces子目录也可一并清空(路径如%APPDATA%\Code\Workspaces)
删完再开 VSCode,它会重建干净的 storage 文件。这步常被跳过,但对反复复现的问题很关键。
额外两个容易被忽略的干扰项
有些行为看似无关,实则和恢复逻辑耦合:
-
workbench.startupEditor:如果设为welcomePage或readme,启动时可能覆盖none效果,建议设为none保底 -
workbench.editor.reopenLastEditorOnStart:控制单个编辑器是否恢复上次光标位置,不影响窗口级恢复,但若设为true,可能让某些插件误触发标签页重建
真正麻烦的是:VSCode 的恢复不是单点开关,而是由 window.restoreWindows 主控 + 缓存文件落地 + 其他编辑器策略协同生效。漏掉任意一层,都可能让你觉得“明明改了怎么还不行”。











