vscode 启动不恢复窗口是因 restorewindows 设置被覆盖或启动方式不当:用户设置中该值需为 "all"(非 false/"none"),且仅图形界面启动(如 dock/开始菜单)才生效;code . 会强制新建窗口,属预期行为;缓存损坏时需清理 backups 和 workspaces 目录。

VSCode 启动时没恢复上次窗口,是 restoreWindows 没生效
VSCode 默认会尝试恢复上次关闭的窗口,但实际不生效,往往不是功能坏了,而是配置被覆盖或优先级冲突。核心开关是 restoreWindows,它控制“启动时是否恢复窗口”,但它的行为受两个关键因素影响:用户设置是否显式设为 false,以及是否以命令行方式启动(比如用 code .)。
-
restoreWindows默认值是"all"(恢复所有窗口),但如果在设置里手动改成false或"none",就彻底关掉了 - 用终端执行
code .或双击文件夹打开时,VSCode 会新建一个窗口,无视restoreWindows设置——这是设计行为,不是 bug - macOS 上如果从 Dock 启动(点击图标),才走正常恢复逻辑;Windows/Linux 类似,需直接双击应用图标或从开始菜单启动
检查并修正 restoreWindows 的真实值
很多人改过设置但没生效,是因为改错了地方:VSCode 有「用户设置」和「工作区设置」两层,而 restoreWindows 只在用户设置中起作用。工作区设置里写这个字段完全无效。
- 打开设置(
Ctrl+,或Cmd+,),搜索restoreWindows - 确认右侧显示的是「User」标签下的值,且不是
false或"none" - 如果搜不到,说明没被修改过,默认就是
"all";如果看到灰色的false,点它右边的垃圾桶图标删掉这条设置 - 也可以直接编辑
settings.json,删掉这一行:"window.restoreWindows": false
为什么用了 code . 就不恢复?这不是 bug,是预期行为
VSCode 把 code . 明确定义为「打开当前文件夹作为新工作区」,哪怕你刚关掉同一个文件夹的窗口,它也不会去合并或恢复——它认为你在主动发起一次新会话。这点和双击文件夹资源管理器里的行为一致。
- 想让终端启动也恢复?不行,VSCode 不提供该选项;但可以换方式:
code --reuse-window .强制复用已有窗口(如果开着),不过仍不会恢复已关闭的窗口 - 真正等价于图形界面启动的方式,只有:macOS 点 Dock 图标、Windows 点开始菜单 VSCode、Linux 点应用菜单图标
- 如果你习惯用终端,建议加个 alias:
alias vsc='code',然后只在需要新开项目时用vsc .,日常启动就靠桌面图标
遇到 Unable to open 'xxx': Unable to read file 类错误,可能是缓存损坏
即使 restoreWindows 正确,启动后仍弹出一堆“无法读取文件”错误,通常不是设置问题,而是 VSCode 的窗口状态缓存(workspaces.json 或 backup 目录)损坏了,尤其在异常退出(杀进程、断电)后容易发生。
- 错误信息典型格式:
Unable to open 'xxx': Unable to read file 'xxx' (Error: File not found) - 解决办法:关闭所有 VSCode 实例,删除用户数据目录下的
Backups和Workspaces子目录(路径见下方) - Windows 路径:
%APPDATA%\Code\Backups和%APPDATA%\Code\Workspaces - macOS 路径:
$HOME/Library/Application Support/Code/Backups和$HOME/Library/Application Support/Code/Workspaces - Linux 路径:
$HOME/.config/Code/Backups和$HOME/.config/Code/Workspaces
恢复逻辑本身不复杂,但依赖底层状态文件的完整性;一旦这些文件错位或残留旧路径,VSCode 就会执着地试图加载已不存在的东西——这时候清缓存比调设置更管用。











