vscode 不缓存未保存的代码片段,仅通过本地历史、git 或崩溃恢复机制可能找回;真正可靠的是主动保存和 git 提交。

VSCode 本地缓存中不存“代码片段”(snippet)——它只存你编辑并保存过的文件快照,不是你写过但没保存的零散代码块。如果你在编辑器里敲了一段逻辑、没保存就关了标签页,那段内容大概率已丢失,除非 VSCode 崩溃恢复机制生效。
为什么找不到“代码片段”缓存
很多人误以为 VSCode 会像浏览器那样自动记录所有输入历史,其实它没有全局键盘输入缓存。所谓“本地历史”(Local History)只针对:已打开的文件 + 曾执行过 Ctrl+S(或启用了自动保存)+ 且该文件属于当前工作区。临时新建的 Untitled-1 标签页、未保存的粘贴内容、控制台里写的调试语句,都不进历史。
-
files.hotExit为true(默认)时,崩溃或异常退出后可能恢复未保存的标签页,但仅限于上次正常关闭前还开着的那些 -
files.autoSave设为afterDelay或onFocusChange可提升未保存内容存活概率,但不等于“全量记录” - VSCode 的
Backups目录(如~/.config/Code/Backups)里是会话级临时文件,命名全是哈希值,无法按内容关键词搜索
还能抢救的几种真实场景
如果你记得那段代码出现在某个具体文件里(哪怕文件已被删),或者它曾被保存过一次,就有机会捞回来:
- 按
Ctrl+Shift+P→ 输入Developer: Show Local History,直接搜文件名关键词(支持模糊匹配),即使文件已从资源管理器消失也能列出历史版本 - 若用 Remote SSH,历史不在本地,而是在远程服务器的
~/.vscode-server/data/User/History/;用grep -rl "关键变量名" ~/.vscode-server/data/User/History/ 2>/dev/null可快速定位含该文本的快照 - 如果那段代码曾被 Git 暂存(
git add)但没提交,运行git fsck --lost-found可能找回 dangling blob,再用git show <hash></hash>查看内容
别碰 .history/ 目录里的文件名
工作区根目录下的 .history/ 看似可手动翻,但里面文件名是 URI 编码 + 时间戳(如 src%2Fhooks%2FuseApi.ts%2F2026-10-15T14-22-08.456Z.json),直接找效率极低;更麻烦的是,这些快照是只读的,复制出来不立刻 Ctrl+S,下次编辑保存就会覆盖它——你以为恢复成功了,其实只是短暂回显。
真正能靠得住的,永远是明确保存动作和 Git 提交节奏。没保存的代码,本质上还没落地成“资产”,VSCode 不负责替你兜底。











