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

VSCode 启动时自动打开项目,不是改一个设置就能成的事——它依赖三类配置协同生效:窗口恢复策略 + 启动参数 + 工作区文件识别。单独调 window.restoreWindows 或只用 code 命令,大概率失败。
为什么 window.restoreWindows 设为 all 还不恢复?
这个设置只是“允许恢复”的前提,不是万能开关。真正起效还需满足两个硬条件:
-
window.restoreWindows必须设为all(不能是prompt或none) -
files.hotExit必须为onExit(默认值,但被误关过的人不少) - 退出 VSCode 时,必须是以“打开文件夹”或“双击
.code-workspace文件”的方式关闭的;如果最后是关掉空窗口,下次启动就只剩空白
macOS 用户额外注意:系统级“在新窗口中打开”选项(Dock 右键→选项)若开启,会覆盖 VSCode 的恢复逻辑,必须同步关闭 window.openFilesInNewWindow。
code 命令传路径总打不开?路径写法有坑
code 不解析波浪线 ~,也不自动 cd 到目标目录。你敲 code ~/my-project,它真去字面路径找,而不是你家目录下。
- 最稳做法:
cd /path/to/project && code . - 用绝对路径:
code /home/user/my-project(Linux/macOS)或code C:\Users\user\my-project(Windows) - Windows PowerShell 中
code .\src可行;CMD 推荐用正斜杠:code ./src,避免反斜杠被转义 - 路径含空格或中文?必须加双引号:
code "./my project"
如何让 VSCode 启动时强制加载指定工作区?
单文件夹模式恢复不稳定,.code-workspace 文件才是跨项目自动加载的关键。VSCode 对它的识别优先级最高,且自带元数据和上次编辑器状态。
- 创建方式:菜单栏 → 文件 → 将工作区另存为… → 生成
my-app.code-workspace - 双击该文件启动,比
code -r /path更容错——它自动解析路径、加载多根结构、还原终端/调试面板布局 - 开机自启别放
code可执行文件,而是把.code-workspace文件路径加入登录项(macOS:系统设置→通用→登录项;Windows:Startup 文件夹) - 文件被移动或删除后启动会报错:
Unable to open 'my-app.code-workspace': File not found.
code -r 参数为什么比 GUI 设置更可靠?
GUI 设置容易被命令行参数覆盖,而 -r(即 --reuse-window)能绕过多数干扰,强制复用已有窗口并加载路径。
-
code -r /path/to/project:有窗口则复用并打开该目录;无则新建并打开 -
code -r ./my-workspace.code-workspace:明确加载多根工作区,比只开文件夹更稳定 - 注意:
--wait只在首次启动 VSCode 实例时阻塞终端;后台已有进程时它立刻返回——想真正等待编辑完成,得先检查进程:pgrep -f "Code Helper" >/dev/null || code --new --wait file.txt
最容易被忽略的是:所有这些配置都依赖你退出时的状态。如果最后关的是空窗口、或者用 Dock 强制退出没保存上下文,再怎么配 restoreWindows 都白搭。











