能恢复,但只对编辑过、有内容变更的文件生效;未保存且无输入的 Untitled-1 不会缓存。需满足:发生文本变更、hotExit 设为 onExit 或 onExitAndWindowClose、异常退出或未清缓存、缓存目录完好。Linux/macOS/Windows 备份路径不同,须准确进入 Backups 目录,查找哈希文件夹中的 file_* 文件,用 VSCode 打开识别内容,保存时手动添加扩展名;Remote SSH 场景下应查服务器端 ~/.vscode-server/data/User/History/ 下的 entries.json 获取最新快照。

能恢复,但只对编辑过、有内容变更的文件生效;没点过 Ctrl+S 也不曾输入任何字符的 Untitled-1 标签,缓存里根本不会存。
确认你符合恢复前提
VSCode 的本地缓存不记录“空编辑”,只在你实际修改内容后、且满足一定条件时才写入磁盘:
- 文件必须被打开并发生过文本变更(哪怕只敲了一个字母)
-
files.hotExit设置为onExit或onExitAndWindowClose(默认是onExit) - VSCode 是异常退出(崩溃、断电、强制杀进程),或你手动关掉但没清空缓存
- 缓存目录未被手动删除,磁盘空间充足(否则旧备份会被自动清理)
定位并进入 Backups 目录(Linux/macOS/Windows 三端路径)
别靠记忆拼路径,大小写、斜杠、隐藏目录一个错就进不去:
- Linux:
~/.config/Code/Backups/(需开启显示隐藏文件) - macOS:
~/Library/Application Support/Code/Backups/(注意Application Support是连写的) - Windows:
%APPDATA%\Code\Backups\(在资源管理器地址栏直接粘贴可打开)
进去后你会看到一堆 32 字符哈希命名的文件夹(如 8a3f9b2c1d4e5f6a7b8c9d0e1f2a3b4c),每个对应一次编辑会话。别猜名字,得逐个打开看。
从 file_* 文件里识别你的草稿内容
每个哈希文件夹里有 workspaces.json 和若干 file_0、file_1 这类无扩展名的二进制文件——真正存代码的是它们:
- 用 VSCode 直接打开
file_0:如果开头是function、const、import或你记得的关键字,大概率就是目标 - 如果打开全是乱码、空行或不可读二进制,跳过这个文件,试下一个
- 不要依赖文件修改时间排序:VSCode 写缓存的时间戳可能滞后于你实际编辑时间
- 找到后立刻右键 → “Save As”,务必手动输入正确扩展名(如
index.ts),否则保存后仍是无语言标识的纯文本
Remote SSH 场景下必须查服务器端 History 目录
如果你用 Remote SSH 连服务器开发,Backups 目录在本地无效——所有缓存都落在远程机器上:
- 路径是:
~/.vscode-server/data/User/History/ - 每个子目录对应一个被编辑过的文件,里面有
entries.json记录每次修改的timestamp和source(即代码快照) - 打开
entries.json,找timestamp最近的一条,其source字段就是最新代码内容 - 该目录下的文件名不等于原文件名,需靠
resource字段反推路径,或靠内容比对确认
最易被忽略的一点:History 目录里的快照是按“文件”粒度存的,而 Backups 是按“会话”粒度存的;两者机制不同、触发条件不同、存放位置也不同——混用路径只会白忙活。











