VSCode 命令行不支持“打开最近项目”,因code命令未暴露UI层维护的recentlyOpened数据;可行方案是解析storage.json提取路径后调用code,或直接使用Ctrl+R/Cmd+R快捷键。

VSCode 命令行本身不支持“打开最近项目”这个操作——code 命令没有内置参数读取或触发 recent history,必须绕道处理。
为什么 code --recent 或类似命令不存在
VSCode 的「最近项目」列表由 UI 层维护,依赖 storage.json 中的 recentlyOpened 字段,该数据不暴露给 CLI 接口。官方 code 命令只接受路径、-r(reuse)、-n(new window)等控制行为的参数,不提供历史回溯能力。
-
code --help输出里完全找不到任何与 “recent”、“history”、“last” 相关的选项 - 试图运行
code --recent或code @recent会直接报错Unknown argument - 即使你刚用
Ctrl+R打开过项目,CLI 也无从感知该动作
真正可行的替代方案:从 storage.json 提取路径并传给 code
你可以手动解析 VSCode 用户数据目录下的 storage.json,提取最新一个文件夹路径,再交给 code 启动。关键在于定位正确路径和解析 JSON:
- Windows 路径:
%APPDATA%\Code\User\globalStorage\storage.json(注意:不是Local Storage,而是globalStorage下的某个子目录;更稳的方式是查%APPDATA%\Code\User\workspaceStorage\下最新修改的文件夹,但最简路径是读%APPDATA%\Code\User\globalStorage\storage.json) - macOS 路径:
~/Library/Application Support/Code/User/globalStorage/storage.json - Linux 路径:
~/.config/Code/User/globalStorage/storage.json - 用
jq提取(需提前安装):jq -r '.recentlyOpened[0].folders[0].folder' storage.json 2>/dev/null | head -n1 - 然后组合执行:
code "$(jq -r '.recentlyOpened[0].folders[0].folder' storage.json)"
⚠️ 注意:recentlyOpened 是数组,索引 [0] 是最新项;但若该条目是 .code-workspace 文件而非文件夹,folders[0].folder 会为空,此时应 fallback 到 files[0] 或跳过。
更可靠、免解析的日常做法:用快捷键代替命令行
如果你真需要“快速回到最近项目”,命令行不是最优路径——VSCode 自带的 Ctrl+R(Win/Linux)或 Cmd+R(macOS)才是为这事设计的原生入口,它:
- 实时响应,不依赖 shell 环境或外部工具
- 支持模糊搜索路径关键词(比如输
api就能命中~/dev/my-api) - 自动过滤掉单文件记录,只列文件夹和
.code-workspace - 右键可「固定」常用项,避免被新项目挤掉
想在终端中一键触发?可以绑定一个 shell 别名调起 GUI 命令面板,但本质仍是走 UI 流程,不是 CLI 原生能力。
真正容易被忽略的是:storage.json 里的 recentlyOpened 只在 VSCode 正常退出时写入——强制杀进程、崩溃、或用 code --wait 启动后未等待返回,都会导致该次打开不被记录。所以“最近”不等于“上次”,而等于“上一次干净退出前打开的”。











