VSCode默认不自动保存,必须将files.autoSave设为off/afterDelay/onFocusChange/onWindowChange之一;设true、false或数字等非法值会失效,且工作区设置可能覆盖全局配置。

VSCode 默认不自动保存,必须显式设置 files.autoSave 为合法字符串值,填 true、false 或数字会完全失效。
files.autoSave 只能设这四个值
它不是布尔开关,而是严格枚举:off、afterDelay、onFocusChange、onWindowChange。其他任何值(包括 "true"、1、null)都会被 VS Code 忽略,退回到默认的 off 行为。
-
off:彻底关闭,等同于未配置 -
afterDelay:编辑停顿后延迟保存 —— 必须同步配files.autoSaveDelay(单位毫秒,推荐1000~1500),否则可能用 0 延迟高频刷盘 -
onFocusChange:当前编辑器标签页失去焦点即保存(切终端、点资源管理器、换文件标签都算) -
onWindowChange:整个 VS Code 窗口失焦才触发(Alt+Tab 切出、微信浮窗盖住也会触发,不稳定)
为什么改了 settings.json 却没生效
90% 是被更高优先级配置覆盖,而非你写错了值:
- 检查项目根目录是否存在
.vscode/settings.json,里面若有"files.autoSave": "off",它会直接屏蔽全局设置 - 语言专属配置优先级更高,例如
"[markdown]": { "files.autoSave": "off" }会让所有.md文件无视全局规则 - 格式化插件(如 Prettier/ESLint)开启
editor.formatOnSave后,若格式化失败(缺配置、语法错、插件未激活),VS Code 会静默放弃本次保存,看起来像“没存” - 文件路径匹配了
files.watcherExclude或files.exclude(如"**/dist/**"),VS Code 可能跳过自动保存逻辑
如何安全启用 afterDelay 模式
这是最常用也最容易踩坑的模式,关键在参数联动:
- 必须同时设置两个字段:
"files.autoSave": "afterDelay"和"files.autoSaveDelay": 1200(单位毫秒) - 不要只设
afterDelay而漏掉autoSaveDelay,VS Code 可能用 0 延迟,导致每敲一个字都触发保存,卡顿明显 - 延迟值别设太小(3000);
1000~1500是多数人输入节奏和响应敏感度的平衡点 - 该模式下,保存时机由“最后一次编辑操作”开始计时,不是从打开文件起算
onFocusChange 是新手最稳妥的选择
它不依赖额外参数,行为可预测,适合多文件频繁切换的场景:
- 只要当前编辑器标签页失去焦点(哪怕只是点了下终端或侧边栏),就会立即保存
- 不会因打字中途暂停而误触发,也不会因窗口被遮挡而意外保存
- 但要注意:如果你习惯边写代码边查文档(比如浏览器和 VS Code 并排),这个模式下切回 VS Code 时不会补存,只有离开当前标签页那一下才触发
- 它不适用于需要“编辑中临时离开、回来继续改”的工作流,因为保存不可逆
真正容易被忽略的是配置层级冲突——你以为改的是全局,其实项目里有个 .vscode/settings.json 正在悄悄关掉它。每次调参前,先看右下角状态栏是否显示「工作区」,再打开对应文件确认。


















