VSCode 的 code 命令不支持 --recent 参数,因其 CLI 层完全不读取 UI 层维护的 storage.json 中的 recentlyOpened 数据;官方未提供任何相关参数,推荐使用 Ctrl+R/Cmd+R 快捷键替代。

VSCode 没有内置命令能直接打开最近项目——code 命令根本不读 recentlyOpened 数据,所有试图用 code --recent 或 code @recent 的写法都会报 Unknown argument。
为什么 code 命令不支持 --recent
VSCode 的「最近项目」列表由 UI 层维护,存在 storage.json 里,但 CLI 完全不访问这个文件。官方 code --help 输出里没有任何与 history、recent、last 相关的参数;code 只接受路径、-r(reuse)、-n(new window)这类行为控制参数。
常见错误现象:
- 运行
code --recent→ 报错Unknown argument - 运行
code @recent→ 同样报错,且不会 fallback 到任何默认行为 - 刚用
Ctrl+R打开过项目,再切终端敲code,CLI 依然无感知
从 storage.json 提取路径并调用 code
这是唯一能在命令行“模拟”打开最近项目的方式,但需手动解析 JSON 并注意结构变化:
- Windows 路径:
%APPDATA%\Code\User\globalStorage\storage.json - macOS 路径:
~/Library/Application Support/Code/User/globalStorage/storage.json - Linux 路径:
~/.config/Code/User/globalStorage/storage.json - 关键字段是
.recentlyOpened[0],但要注意:[0].folders[0].folder可能为空(比如最新项是.code-workspace文件),此时应 fallback 到[0].files[0]或跳过 - 推荐用
jq提取(需提前安装):jq -r '.recentlyOpened[0].folders[0].folder // .recentlyOpened[0].files[0]' storage.json 2>/dev/null | head -n1 - 组合执行:
code "$(jq -r '.recentlyOpened[0].folders[0].folder // .recentlyOpened[0].files[0]' storage.json 2>/dev/null)"
更可靠、免解析的日常做法:用快捷键代替命令行
如果你真需要“快速回到最近项目”,命令行不是设计目标——VSCode 自带的 Ctrl+R(Win/Linux)或 Cmd+R(macOS)才是原生方案:
- 实时响应,不依赖 shell 环境或外部工具(如
jq) - 自动过滤单文件记录,只列文件夹和
.code-workspace - 支持模糊搜索(比如输
api就能命中~/dev/my-api) - 右键可「固定」常用项,避免被新项目挤掉
真正容易被忽略的是:VSCode 的 UI 层和 CLI 层数据完全隔离。你改了设置、点了菜单、用了快捷键,这些动作都不会同步到 code 命令的上下文里。想靠命令行复现 UI 行为,就得自己搭桥——而桥本身(解析 storage.json)又不稳定:字段名可能变、数组索引可能空、路径可能权限受限。日常开发中,直接按 Cmd+R 是最稳的选择。











