推荐使用 onFocusChange 模式,即编辑器失焦时保存,兼顾防丢稿与不打断思路;慎用 onWindowChange,易受多程序干扰;afterDelay 仅在该模式下通过 files.autoSaveDelay 调整延迟;需用 files.autoSaveExclude 排除日志、锁文件等。

VSCode 自动保存不是“开个开关”就完事——选错模式反而容易丢稿或拖慢编辑体验,关键在匹配你的工作流。
怎么选 files.autoSave 模式?看你是写代码、切终端,还是常 Alt+Tab
VSCode 提供四种值,但真正常用且安全的是三种:
-
off:完全关闭。适合调试配置文件、临时改环境变量等“改完不立刻生效”的场景 -
afterDelay:输入停顿后自动保存,默认延迟 1000ms(1 秒)。适合专注写代码、少切换窗口的人;但打字中途误停 1 秒,可能把半截 if 语句存进去 -
onFocusChange:当前编辑器失去焦点时保存(比如点一下终端、切个标签页、点下浏览器)。这是多数人的推荐选择——既防忘存,又不打断思路 -
onWindowChange:整个 VSCode 窗口失焦才保存。多显示器用户容易误触发(比如微信弹窗盖住 VSCode),不建议日常使用
别用 onWindowChange,它比 onFocusChange 更难预测,尤其你开着微信、钉钉、终端、浏览器四开时。
延迟时间怎么调?files.autoSaveDelay 只对 afterDelay 有效
这个设置只在 "files.autoSave": "afterDelay" 时起作用,填其他模式下设了也白设。
- 300–500ms:响应快,但可能和中文输入法冲突(刚打完“const”还没选字,就存了个半成品)
- 1000ms(默认):新手友好,平衡误触与及时性
- 2000ms+:适合写大段注释、Markdown 草稿,避免未完成内容被 Git 捕获
如果你选了 onFocusChange,files.autoSaveDelay 完全无效,不用管它。
哪些文件不该自动保存?用 files.autoSaveExclude 过滤
日志、锁文件、构建产物这些类型,自动保存不仅没用,还可能干扰外部进程:
-
"**/*.log":tail -f 查看时被反复覆盖,日志会跳 -
"**/package-lock.json":npm/yarn 控制的文件,手动 install 后再保存才合理 -
"**/dist/**":构建输出目录,编辑它通常说明流程出错了
在 settings.json 中添加:
{
"files.autoSave": "onFocusChange",
"files.autoSaveExclude": [
"**/*.log",
"**/package-lock.json",
"**/dist/**"
]
}
工作区 vs 全局设置:团队协作时别踩坑
如果你想让整个项目成员行为一致(比如统一用 onFocusChange + Prettier 格式化),就把配置放进项目根目录的 .vscode/settings.json;但别把它提交到 Git —— 除非你明确要求所有人遵守(比如金融类项目强规范)。
常见错误现象:git status 里一堆 modified 却没动过文件?很可能是别人开了 afterDelay,而你没开,导致他们改完就存、你改完没存,Git 状态不一致。
真正容易被忽略的点是:未命名文件(Untitled-1)、只读文件、被其他程序锁定的文件,自动保存默认跳过——它不会报错,也不会提示,只是静默失效。









