vs code的“最近打开”记录存储在globalstorage/state.vscdb sqlite数据库中,路径因系统而异:linux为~/.config/code/user/globalstorage/state.vscdb,windows为%appdata%\code\user\globalstorage\state.vscdb,macos为~/library/application support/code/user/globalstorage/state.vscdb。

VS Code 的“最近打开”记录存在哪里
VS Code 的“最近打开”列表(即「文件 → 打开最近」里的项目)不是存在工作区配置或用户设置里,而是由 VS Code 自己维护的本地状态数据库,路径在:~/.config/Code/User/globalStorage/state.vscdb(Linux)、%APPDATA%\Code\User\globalStorage\state.vscdb(Windows)、~/Library/Application Support/Code/User/globalStorage/state.vscdb(macOS)。这个 SQLite 数据库里存着包括最近打开、最近关闭、最近工作区等所有 UI 状态。
- 它和
settings.json无关,改配置项无效 - 它不随同步(Settings Sync)上传,但会随本地数据迁移一起带走
- 直接删掉整个
globalStorage文件夹最彻底,但也会清空其他扩展的持久化状态(比如 Git Graph 的分支缓存、TODO Tree 的索引等)
用命令行快速清空最近打开记录
最安全又可控的方式是只删掉“最近打开”对应的数据表,而不是整个数据库。用 SQLite 命令即可:
sqlite3 ~/.config/Code/User/globalStorage/state.vscdb "DELETE FROM ItemTable WHERE key LIKE 'history.recentlyOpened%';"
- Windows 用户可用
sqlite3.exe(需提前下载并加入 PATH),命令改为:sqlite3 "%APPDATA%\Code\User\globalStorage\state.vscdb" "DELETE FROM ItemTable WHERE key LIKE 'history.recentlyOpened%';"
- macOS 用户可直接用系统自带的
sqlite3 - 执行前确保 VS Code 已完全退出(包括后台进程),否则数据库被锁,操作失败
- 如果提示
no such table: ItemTable,说明数据库结构已更新(较新版本 VS Code 改用storageItems表),此时应查表名:sqlite3 ~/.config/Code/User/globalStorage/state.vscdb ".tables"
为什么禁用 workbench.startupEditor 不起作用
有人尝试在 settings.json 里设:"workbench.startupEditor": "none" 或 "workbench.editor.restoreRecentFiles": false,但这只是控制启动时是否自动打开最近文件,不影响“最近打开”菜单本身的记录逻辑。
-
workbench.editor.restoreRecentFiles只影响编辑器标签页是否还原上次关闭前的文件,和菜单列表无关 -
workbench.startupEditor控制的是启动后默认显示什么(欢迎页、空窗口、最近文件等) - 这两个设置哪怕全关了,你手动点过几次“打开最近”,列表照样会累积
重启后仍残留?检查是否有多个用户数据目录
VS Code 支持多用户数据路径(比如用了 --user-data-dir 启动、或安装了 Insiders 版本),这时你删的可能是 Stable 版的数据库,而实际运行的是 Insiders 版,它的记录在另一套路径下。
- 查当前 VS Code 使用的用户数据路径:打开命令面板(
Ctrl+Shift+P),输入Developer: Show Running Extensions,看顶部显示的 “User Data Folder” 路径 - 或者终端执行:
code --status | grep "user data"
- 确保你操作的是正在使用的那个
globalStorage目录,否则白忙一场
真正要“彻底删除”,关键就两点:找到对的数据库文件、用对的 SQL 删对的键。别信那些改设置或清缓存目录的偏方——它们根本没碰到底层记录源。











