VSCode无传统崩溃恢复机制,但通过配置files.autoSave为onFocusChange或afterDelay、启用window.restoreWindows和files.hotExit,并结合Git提交习惯,可最大限度防止代码丢失。

VSCode 本身没有“恢复未保存文件”的传统意义的崩溃恢复机制,但通过合理配置 files.autoSave 和启用工作区/会话级的自动恢复能力,可以极大降低丢失代码的风险。关键不是等它“恢复”,而是让它“几乎从不真正丢失”。
设置 files.autoSave 为 onFocusChange 或 afterDelay
这是最直接控制自动保存行为的配置项。默认是 off,意味着你必须手动按 Ctrl+S 才会写入磁盘。
推荐在用户设置(settings.json)中显式指定:
{
"files.autoSave": "onFocusChange",
"files.autoSaveDelay": 1000
}
onFocusChange 表示当你切换编辑器标签、点击终端、或离开 VSCode 窗口时,当前文件立即保存;afterDelay 则需配合 files.autoSaveDelay(单位毫秒),适合高频修改场景但不想太频繁刷磁盘。
-
onWindowChange是全局窗口失焦才保存,不如onFocusChange及时 - 避免设为
on(即实时保存),某些语言服务(如 Python 的 Pylance)可能因频繁读取未完成输入而报错或卡顿 - 该设置对所有文件生效,无法按语言单独关闭;如需例外(比如临时编辑日志文件),可右键编辑器标签 →
Disable Auto Save
确认 window.restoreWindows 和 files.hotExit 已启用
这两项共同决定 VSCode 关闭再打开时能否还原上次打开的文件和编辑位置:
-
window.restoreWindows控制是否还原窗口布局(默认all,即所有窗口都恢复) -
files.hotExit决定退出时是否保留未保存的更改(默认onExit,即仅在正常退出时保留;若设为onExitAndWindowClose,连关掉单个窗口也会暂存) - 如果某次是强制杀进程(如 Windows 上用任务管理器结束
Code.exe),hotExit不起作用——此时依赖的是 VSCode 的崩溃恢复缓存(见下一点)
理解崩溃恢复的触发条件与存储位置
VSCode 在异常退出后,下次启动时会弹出“恢复未保存的文件”提示,这依赖其后台的“工作区状态快照”。它不是实时备份,而是:
- 每 5 分钟左右将当前所有已打开且有修改的编辑器内容写入本地缓存目录
- 路径取决于系统:
$HOME/Library/Application Support/Code/Backups/(macOS)、%APPDATA%\Code\Backups\(Windows)、$HOME/.config/Code/Backups/(Linux) - 该机制不可配置间隔或开关,但可通过
files.hotExit关闭整个恢复流程(包括崩溃恢复) - 如果磁盘空间不足、缓存目录被手动清空、或 VSCode 升级后旧缓存格式不兼容,恢复可能失败
额外建议:用 Git 暂存区替代“恢复”幻想
真正可靠的“恢复”,从来不是靠编辑器缓存,而是靠版本控制。哪怕只是本地 Git 仓库:
- 每次开始新功能前执行
git checkout -b feat/x - 写几行就
git add -p+git commit -m "wip" - 即使 VSCode 崩溃、电脑断电、误删整个文件夹,只要提交过,
git reflog和git fsck都能找回大部分内容 - VSCode 内置 Git 面板(
Ctrl+Shift+G)让这个流程几乎无感
自动保存和崩溃恢复是兜底手段;Git 提交才是主动保险。别等到弹出“恢复未保存文件”对话框时,才意识到自己已经写了半小时没碰过 git commit。










