vscode启动不恢复工作区需检查restorewindows配置为all或folders;命令行启动需加-r参数;多窗口应设window.openfilesinnewwindow为off;恢复失败可删除workspaces.json重建状态。

VSCode 启动时工作区不恢复?检查 restoreWindows 配置
VSCode 默认行为是「记住上次打开的窗口」,但很多人发现重启后只看到空窗口或默认文件夹——大概率是 restoreWindows 被设成了 none 或配置被覆盖了。
这个设置控制 VSCode 退出时是否保存窗口状态(包括打开的文件、编辑器分组、终端面板等),以及启动时是否还原。它不是开关式选项,而是有三个可选值:all、folders、none。
-
all:恢复所有窗口(含未保存的临时文件、空白编辑器、多窗口布局) -
folders:只恢复已打开的工作区/文件夹,忽略未保存的临时标签页 -
none:每次启动都是干净新窗口(常见于误操作或某些插件重置配置)
打开设置(Ctrl+, 或 Cmd+,),搜索 restoreWindows,确认其值为 all 或 folders;如果用的是 settings.json,确保这一行存在且没被注释:
"window.restoreWindows": "all"
通过命令行启动 VSCode 时工作区丢失?别漏掉 -r 参数
如果你习惯用终端启动 VSCode(比如 code my-project),它默认会新建一个窗口打开指定路径,**完全无视上次状态**——这不是 bug,是设计行为。
想让命令行启动也尊重恢复逻辑,必须显式加 -r(即 --reuse-window):
-
code -r:复用当前窗口(若无则新建,并尝试恢复) -
code -r .:在当前目录打开,同时触发窗口恢复逻辑 - 不加
-r:强制新建窗口,restoreWindows设置失效
注意:-r 不等于「恢复上次项目」,它只是告诉 VSCode:别新建窗口,优先复用并按配置恢复。真正决定恢复内容的,还是 restoreWindows 的值。
多窗口场景下只恢复主窗口?window.openFilesInNewWindow 干扰了恢复顺序
当你习惯开多个 VSCode 窗口(比如一个写代码、一个查文档),重启后可能只有第一个窗口恢复,其余变空白——问题常出在 window.openFilesInNewWindow 和 restoreWindows 的组合逻辑上。
这个配置控制「双击文件或拖入文件时是否新开窗口」,但它间接影响启动恢复:如果设为 on,VSCode 会把每个窗口视为独立会话,而恢复机制默认只对「最后一个关闭的窗口」生效。
- 设为
off:所有文件都在同一窗口打开,恢复更稳定 - 设为
on:多窗口时需手动关闭所有窗口再退出,否则只有最后关闭的那个会被完整记录 - 设为
default:行为取决于系统(macOS 倾向复用,Windows 倾向新开),恢复一致性差
建议统一设为 off,尤其在需要可靠恢复的开发环境中。
插件或用户数据损坏导致恢复失效?直接删 workspaces.json 更快
有时候改完配置仍不恢复,连 code --disable-extensions 都没用——大概率是 VSCode 自己存的窗口快照文件坏了。它不报错,只是默默跳过恢复步骤。
关键文件是 workspaces.json,位置在用户数据目录下:
- Windows:
%APPDATA%\Code\User\globalStorage\state.vscdb(实际是 SQLite,但恢复信息存在另一处) - macOS:
~/Library/Application Support/Code/User/globalStorage/state.vscdb - Linux:
~/.config/Code/User/globalStorage/state.vscdb
更简单的方法:找到 VSCode 用户数据根目录(code --user-data-dir 可查看路径),进入 User/ 子目录,删掉 workspaces.json(如果存在)和 workspaceStorage/ 文件夹。重启后 VSCode 会重建干净状态,下次退出时重新记录。
这比重装、清缓存快得多,而且不会丢掉你的设置和插件。
恢复逻辑本身不复杂,但依赖「退出方式」「配置组合」「文件状态」三者对齐。最容易被忽略的是:你以为关掉了所有窗口,其实后台还有隐藏的终端窗口进程没退出干净——它会让 VSCode 认为「上次没正常关闭」,从而跳过恢复。











