VSCode无自动备份功能,仅内置自动保存;files.autoSave控制写盘时机,推荐afterDelay模式;本地系统备份粒度粗、易遗漏;Local History插件可实现每次保存前快照,Git预存钩子更可靠。

VSCode 本身不提供“自动备份”功能,所谓备份必须靠外部机制或插件实现;自动保存是内置功能,但默认不生成历史副本——这两件事不能混为一谈。
如何开启并正确配置 files.autoSave
自动保存控制的是「编辑后多久把当前文件写入磁盘」,不是备份。它有四个可选值:
-
off:完全关闭(默认值) -
afterDelay:延迟保存(需配files.autoSaveDelay,单位毫秒,默认1000) -
onFocusChange:切换焦点时保存(比如点到终端或另一个标签页) -
onWindowChange:窗口失焦时保存(比如切到浏览器)
推荐设为 afterDelay 并调低延迟(如 500),避免光标悬停就狂写盘;不要用 onFocusChange,它在多标签频繁切换时可能漏存。
为什么不能依赖本地文件系统做「自动备份」
Windows 的卷影复制、macOS 的 Time Machine 或 Linux 的 rsync 脚本,都不是 VSCode 行为,它们备份的是整个目录,无法按「每次保存前快照」粒度工作。更关键的是:
- 这些工具通常有分钟级间隔,
Ctrl+S后立刻误删,备份里根本没有这一版 - 它们不区分「有效修改」和「光标移动触发的空保存」,容易塞满冗余版本
- VSCode 的
.vscode/settings.json不会被这些工具特殊对待,改了设置也可能丢
真正可用的轻量备份方案:Local History 插件
插件 Local History(作者: xyz)会在项目根目录下建 .history/ 文件夹,每次保存前自动存一个带时间戳的副本,不依赖 Git,也不上传云端。
- 安装后默认启用,无需配置;想调整保留天数,改
local-history.maxFileHistory(单位天) - 右键文件 →
Local History: Show History可查所有快照,支持对比、恢复 - 注意:它只监控已打开的文件,没打开的 .js/.py 文件不会被记录
- 和 Git 冲突?插件默认忽略
.git目录,但若你用git worktree,得手动加local-history.historyPath避免跨工作树混存
Git + Pre-save Hook 是最可控的「伪备份」方式
如果你已用 Git,可以用 simple-git 库写个极简脚本,在每次保存前自动 git add -u && git commit -m "auto save $(date +%s)",再配合 git reflog 回溯。
- 比 Local History 更可靠:Git 提交校验完整,不怕文件系统损坏
- 风险点:频繁提交会让
git log看起来很脏;建议用--no-verify跳过 lint 钩子,否则保存卡顿 - 别把
.git放在 U 盘或网络盘上运行,commit 会因 I/O 延迟失败且无提示
真正需要备份的从来不是「最新版」,而是「改坏之前那一秒的状态」——Local History 存的是这个,Git 存的是这个,而 VSCode 自己只管把字节刷进硬盘。










