必须同时将window.restoreWindows设为none且workbench.startupEditor设为welcomePage,否则VSCode启动时仍会自动打开旧项目;macOS需Cmd+Q彻底退出进程,Windows需禁用开机自启,命令行启动参数(如-r)会覆盖GUI设置。

直接改 window.restoreWindows 为 none,再确保 workbench.startupEditor 是 welcomePage —— 这两个设置缺一不可,否则启动时仍会跳进旧项目。
为什么只改 window.restoreWindows 还不行?
很多人只改了 window.restoreWindows 就以为搞定了,结果重启后还是自动打开上次文件夹。这是因为 VSCode 启动行为由两层控制:
- window.restoreWindows 决定“要不要恢复窗口”
- workbench.startupEditor 决定“恢复失败或不恢复时,显示什么”
如果 window.restoreWindows 是 none,但 workbench.startupEditor 被设成了 lastActiveEditor 或 none,VSCode 可能 fallback 到空窗口、上一个编辑器标签,甚至静默加载最近工作区(尤其在 macOS 下 Dock 双击时)。
所以必须同步确认:workbench.startupEditor 的值是 welcomePage,不是 welcomePageInNewTab,也不是被其他扩展或策略覆盖的值。
Windows 用户务必检查系统启动项
即使 VSCode 设置全对,只要 Windows 把它加进了开机自启列表,冷启动时就会绕过你的设置,直接拉起上次会话。
- 按
Ctrl + Shift + Esc打开任务管理器 →「启动」选项卡 - 找到名称含
Visual Studio Code或发布者为Microsoft Corporation的条目 → 右键「禁用」 - 额外检查「设置 → 应用 → 启动」里
VisualStudioCode或Code是否关闭(新版 Windows 常藏在这里)
不关这个,你改完设置重启电脑,VSCode 依然会自己弹出来并加载旧项目——这不是编辑器 bug,是系统级干预。
macOS 用户最容易忽略的退出方式
macOS 下点红叉 ✖️ ≠ 退出 VSCode。只要进程还在,下次点击 Dock 图标只是唤起已有窗口,window.restoreWindows 根本不生效。
- 真正退出必须用
Cmd + Q,或右键 Dock 图标选「退出」 - 验证是否退出:打开「活动监视器」,搜索
Code,进程列表里应无任何匹配项 - 可顺手开启
window.closeWhenEmpty(设为true),让空窗口自动退出进程,避免误操作残留
很多用户反复修改设置无效,问题就卡在这一步:以为关了窗口就等于退出了进程。
命令行启动时参数会覆盖设置
如果你常用终端启动 VSCode(比如 alias code=code -r),那 -r(即 --reuse-window)会强制复用窗口并恢复路径,直接无视 window.restoreWindows: none。
- 临时新开干净窗口:用
code -n - 验证设置是否生效:直接运行
code(不带任何参数) - 检查快捷方式或脚本末尾是否多出了
--welcome、--new-window等干扰参数
参数优先级高于 GUI 设置,这是排查时最常被绕过的盲区。


















