VS Code防丢需同时开启自动保存(推荐onFocusChange模式)和文件恢复机制,启用files.hotExit与window.restoreWindows,并依赖本地历史快照(.vscode/.history/)及外部Git或系统备份。

VS Code 自动保存怎么开,开到什么程度才真正防丢
VS Code 默认不自动保存文件,关掉编辑器或崩溃时未手动 Ctrl+S 的修改就没了。真要防丢,光开「自动保存」不够,得配对启用「文件恢复」机制。
自动保存有三种模式,关键区别在触发时机和可靠性:
- afterDelay:默认值,停敲 1 秒后保存——适合多数人,但断电瞬间仍可能丢最后 1 秒
- onFocusChange:切出当前文件(比如点到终端或另一个 tab)时保存——更稳妥,适合多任务切换频繁的场景
- onWindowChange:切出整个 VS Code 窗口时保存——最保守,但可能误触发(比如 Alt+Tab 切桌面)
推荐设为 onFocusChange,配置路径:Settings > Files: Auto Save,或直接改 settings.json:
"files.autoSave": "onFocusChange"
崩溃后文件还能找回来吗?靠的是「本地历史」和「工作区恢复」
VS Code 崩溃重启后能自动打开上次未关闭的文件,但这依赖两个隐藏开关是否开启:
-
files.hotExit必须为onExitAndWindowClose(默认值),否则关窗口就清空未保存内容 -
window.restoreWindows要设为all或folders,否则重启只开空白窗口
更关键的是「本地历史」(Local History):VS Code 每次保存都会悄悄存一份快照,保留 5 天(不可调),路径在:.vscode/.history/ 下按日期分目录。右键文件 → Open Local History 就能看到时间线,选中还原即可——这比 Git commit 还快,且不依赖仓库。
为什么改了设置还是丢代码?检查这三个干扰项
即使开了自动保存,以下情况仍会导致“看似没保存”:
- 编辑的是**未保存的临时文件**(标题栏带「Untitled-1」),这类文件不会写入磁盘,崩溃即消失;务必先
Ctrl+S指定路径再编辑 - 用了插件如
Auto Rename Tag或Prettier,它们可能在保存前触发格式化,若格式化失败会中断保存流程——看右下角状态栏有没有报错提示 - 工作区启用了
files.exclude或search.exclude,意外把.vscode/.history/排除,导致本地历史失效
想彻底防丢,还得加一层「外部备份」逻辑
VS Code 自身机制只能保最近几次修改,长期防丢得靠外部手段:
- 用 Git:哪怕不 push,
git add -A && git commit -m "auto"配合脚本定时执行,比依赖 UI 更可靠 - 系统级备份:Windows 启用「文件历史记录」,macOS 开 Time Machine,把项目目录纳入监控——注意要包含
.vscode/目录,它存着本地历史快照 - 慎用「云同步」:VS Code 的 Settings Sync 不同步本地历史,也不保证崩溃瞬间数据一致,不能当备份主力
最易被忽略的一点:本地历史快照只存在于项目根目录下的 .vscode/.history/,如果项目是软链接、放在 OneDrive/Google Drive 同步区、或权限受限的网络盘,这个目录可能被跳过或损坏——务必确认该路径真实可写且未被同步工具拦截。










