工作区设置最关键,因其优先级高于用户设置且可随项目提交确保团队一致;直接编辑.vscode/settings.json配置files.autosave为"afterdelay"等合法字符串值(非布尔或数字),避免被忽略。

直接改工作区 .vscode/settings.json 最可靠
图形界面里搜 “auto save” 点下拉选,容易被用户级设置干扰;而工作区配置优先级更高,且能随项目一起提交(如团队协作时需统一行为)。打开命令面板 Ctrl+Shift+P(Win/Linux)或 Cmd+Shift+P(macOS),输入并选择 Preferences: Open Workspace Settings (JSON),在打开的 .vscode/settings.json 里写入:
{
"files.autoSave": "afterDelay",
"files.autoSaveDelay": 1000
}
注意:不要写成 true、1 或 "true" —— files.autoSave 只接受四个字符串值:"off"、"afterDelay"、"onFocusChange"、"onWindowChange"。设错会被完全忽略。
为什么工作区设置常被忽略却最关键
VSCode 设置有三级优先级:用户级 .vscode/settings.json,它就会覆盖你全局设置,哪怕你在图形界面里已选好 onFocusChange,右下角显示「工作区」时也说明当前生效的是这个文件里的规则。
- 检查右下角状态栏是否显示「工作区」字样,是则必须编辑该工作区的
.vscode/settings.json - 如果该文件里已有
"files.autoSave": "off",删掉或改成你需要的值 - 多根工作区(多个文件夹同时打开)下,每个根目录都可有自己的
.vscode/settings.json,互不影响
onFocusChange 和 afterDelay 在工作区里怎么选
二者触发逻辑差异明显,选错会直接影响编码节奏:
-
onFocusChange:当前编辑的标签页一失去焦点就保存,比如点终端、切到另一个.ts文件、甚至点击资源管理器侧边栏——适合怕丢内容、常写配置或文档的人 -
afterDelay:必须配files.autoSaveDelay(单位毫秒),推荐800~1500;太小(如100)在 WSL 或机械硬盘上会卡顿,太大(如3000)容易切走后忘记改了什么 - 别用
onWindowChange:系统通知弹窗、微信浮窗盖住 VSCode 都会触发保存,不稳定,不推荐日常使用
格式化插件可能让自动保存“看起来失效”
如果你同时开了 editor.formatOnSave,而 Prettier 或 ESLint 格式化失败(比如缺 .prettierrc、语法错误、插件未激活),VSCode 会静默取消本次保存——文件没变,右上角圆点还在,但你以为“没保存”,其实是格式化环节拦下了。
- 临时验证:关掉
editor.formatOnSave,再试自动保存是否恢复 - 确保对应语言有默认 formatter,例如:
"[typescript]": { "editor.defaultFormatter": "esbenp.prettier-vscode" } - 排除路径干扰:大型项目中,若文件匹配了
files.exclude或files.watcherExclude(如"**/dist/**"),VSCode 可能跳过自动保存逻辑











