VS Code自动保存需分三层配置:全局设合法字符串值(off/afterDelay/onFocusChange/onWindowChange),工作区和语言专属配置优先级更高,且需排除构建目录、确保文件已修改才生效。

全局设置只能统一“默认行为”,但实际生效的往往是工作区或语言专属配置——想让所有项目真正按你想要的方式自动保存,必须分三层处理。
files.autoSave 必须设为合法字符串值
VS Code 的 files.autoSave 不是布尔开关,填 true、false 或数字(比如 1000)会直接失效,编辑器静默忽略。它只接受四个字符串:off、afterDelay、onFocusChange、onWindowChange。
-
off:彻底关闭(默认值) -
afterDelay:必须同步配files.autoSaveDelay(单位毫秒),否则可能用 0 延迟导致高频刷盘 -
onFocusChange:切标签、点终端、开命令面板都会触发保存,适合防丢内容 -
onWindowChange:Alt+Tab 切出、微信浮窗盖住也会触发,不稳定,不推荐
为什么改了用户 settings.json 还没用
90% 是被更高优先级配置覆盖,不是你设错了:
- 检查项目根目录是否存在
.vscode/settings.json,里面若有"files.autoSave": "off",它会直接屏蔽全局设置 - 语言专属配置优先级更高,例如
"[markdown]": { "files.autoSave": "off" }会让所有.md文件无视全局规则 - 某些插件(如 Prettier)开启
editor.formatOnSave后,若格式化失败(缺配置、语法错、插件未激活),VS Code 会静默放弃本次保存,看起来像“没存” - 路径被
files.watcherExclude或files.exclude匹配(如"**/dist/**"),VS Code 可能跳过自动保存逻辑
真正统一所有项目的实操路径
不能只靠用户级设置,得组合落地:
- 在用户
settings.json中设基础值:"files.autoSave": "onFocusChange"(最稳的兜底) - 对新项目,初始化时在根目录建
.vscode/settings.json,写入项目所需模式(如"files.autoSave": "afterDelay"+"files.autoSaveDelay": 1200) - 团队协作时,把
.vscode/settings.json提交进 Git,确保新人克隆即生效 - 排除构建产物目录,避免误触发编译:
"files.autoSaveExclude": ["**/dist/**", "**/build/**", "**/__pycache__/**"]
容易被忽略的一点:自动保存只对已修改的文件生效——新建空文件、刚拉取未改动的文件右上角没有圆点(●),它不会主动保存。别指望它帮你“预存”未编辑过的文件。











