VSCode启动时自动打开项目需三类配置协同:window.restoreWindows设为all、files.hotExit设为onExit、workbench.startupEditor设为lastActiveEditor,并配合code -r参数或.code-workspace文件使用。

VSCode 启动时自动打开项目,不是靠“默认行为”实现的,而是靠三类配置组合生效:窗口恢复策略 + 启动参数 + 工作区文件识别。单独改任一设置都可能失效。
window.restoreWindows 设为 all 才能真正恢复上次会话
这个设置控制 VSCode 重启后是否还原上一个窗口的状态(含打开的文件夹、编辑器标签、布局等)。设为 prompt 会在启动时弹窗询问,none 直接空白;只有 all 才无条件恢复——但前提是关机前你确实是以“打开文件夹”或“打开 .code-workspace 文件”的方式退出的。
- 在设置中搜索
window.restoreWindows,选all - 必须配合
files.hotExit为onExit(默认值),否则关窗口时未保存状态,下次就空了 - macOS 上若用 Dock 图标双击启动却没恢复,大概率是系统级设置了“在新窗口中打开”,需同步关闭
window.openFilesInNewWindow
code -r 启动参数比 GUI 设置更可靠
GUI 设置有时会被命令行参数覆盖,而 -r(即 --reuse-window)能强制复用已有窗口并加载路径,避免弹出多个实例干扰恢复逻辑。
-
code -r /path/to/project:有窗口则复用并打开该目录;无则新建并打开 -
code -r ./my-workspace.code-workspace:明确加载多根工作区,比只打开文件夹更稳定 - 路径不能带波浪线
~,code -r ~/project会失败,必须用绝对路径或先cd再code -r . - Windows PowerShell 中
code -r .\src可行,CMD 推荐用正斜杠:code -r ./src
.code-workspace 文件是跨项目自动加载的关键
VSCode 对单文件夹和多根工作区的恢复逻辑不同:只打开普通文件夹时,workbench.startupEditor 配置可能不触发工作区上下文;但双击 .code-workspace 文件,会强制以工作区模式启动,且记住上次打开的编辑器状态。
- 创建方式:
文件 → 将工作区另存为…,生成my-app.code-workspace - 必须确保该文件未被移动或删除,否则启动时会报错
Unable to open 'my-app.code-workspace': File not found. - 双击该文件启动,比用
code命令加路径更容错——它自带路径解析和工作区元数据 - 如果希望开机自启,把该文件路径加入系统登录项(macOS 在“系统设置→通用→登录项”,Windows 放进 Startup 文件夹),而不是放 VSCode 可执行文件
workbench.startupEditor 必须设为 lastActiveEditor
即使窗口恢复了,如果 workbench.startupEditor 是 welcomePage 或 none,仍会跳转到欢迎页或空白页,而不是你刚编辑的文件。设为 lastActiveEditor 才能让焦点回到上次活动的编辑器。
- 搜索
workbench.startupEditor,选lastActiveEditor - 该设置只在有已恢复编辑器时生效;若上次是空窗口退出,它会留空标签页,而非强行拉起欢迎页
- 禁用欢迎页可设
workbench.welcomePage.enabled为false,但注意这也会隐藏 Ctrl+R 的“最近”面板入口——它只是首页没了,快捷键仍可用 - 命令行启动时该设置不生效,例如
code --goto index.js:10会直接打开文件,绕过workbench.startupEditor
最容易被忽略的是:所有这些设置都依赖 VSCode 正常退出。如果进程被强杀(如 kill -9、任务管理器结束任务)、崩溃或系统断电,files.hotExit 无法写入状态,下次启动就只能从头开始。日常开发中,宁可多点一下菜单栏的“退出”,也不要直接关窗口或杀进程。



















