如何让VS Code仅单次跳过加载历史工作区,下次启动恢复原有状态?
单次启动跳过原有工作区加载的原生方案
单纯使用-n参数启动时,VS Code仍会读取原有恢复状态,遇到无法访问的NFS工作区路径依然会触发窗口关闭。可以通过启动参数指定临时用户数据目录,实现完全隔离的单次空白启动,完全不触碰原有配置:
- 原理:通过
--user-data-dir参数指定一个独立的、空的临时目录作为本次启动的所有数据存储路径,VS Code本次运行过程中不会读取原有工作区的恢复记录,也不会向原有配置目录写入任何状态 - 对应平台的启动命令:
- Windows:
code --user-data-dir "%temp%\vscode_temp_clean" -n - macOS/Linux:
code --user-data-dir /tmp/vscode_temp_clean -n
- Windows:
- 效果:本次启动为完全无工作区的空白状态,不会触发因NFS路径未挂载导致的窗口闪退;关闭本次临时启动的VS Code后,下次按常规方式启动VS Code时,所有原有工作区、界面布局、配置项都会按之前的默认状态正常加载,无任何残留改动,临时目录的内容会由系统自动清理,不需要手动维护。
VS Code 状态文件的存储与手动备份恢复方法
如果不需要额外配置独立启动入口,可以通过直接操作状态文件的方式实现临时跳过工作区加载:
- 核心状态文件存储路径,该文件存储了所有工作区恢复列表、窗口布局、上次退出状态信息:
- Windows:
%APPDATA%\Code\User\globalStorage\storage.json - macOS:
~/Library/Application Support/Code/User/globalStorage/storage.json - Linux:
~/.config/Code/User/globalStorage/storage.json
- Windows:
- 手动操作流程:
- 在VPN正常连接、所有NFS挂载路径可访问的状态下,关闭所有VS Code窗口,将上述路径下的
storage.json完整复制备份到其他位置,作为正常工作状态的快照 - 需要在未连接VPN的状态下临时启动VS Code时,先将原路径下的
storage.json重命名为storage.json.bak,此时VS Code启动时读取不到原有恢复状态,会直接打开空白窗口,不会触发因路径不存在导致的窗口闪退 - 临时使用结束后,将重命名的文件改回
storage.json,即可完全恢复到之前的正常工作状态
- 在VPN正常连接、所有NFS挂载路径可访问的状态下,关闭所有VS Code窗口,将上述路径下的
注意:修改状态文件前必须确保所有VS Code进程完全退出,否则VS Code正常关闭时会将内存中缓存的状态覆盖到文件中,导致修改失效。
内容的提问来源于stack exchange,提问作者Joe Casadonte
相关产品推荐
相关产品推荐

