VS Code 默认不自动保存,必须将 files.autoSave 设为 "off"/"afterDelay"/"onFocusChange"/"onWindowChange" 之一;设 true、1 等非法值无效,且需防工作区覆盖、语言专属设置、格式化插件失败等干扰。

VS Code 的全局自动保存不能靠“点开开关”就生效,必须明确配置 files.autoSave 为合法字符串值,否则即使图形界面显示已选,实际也不触发保存。
全局设置里改 files.autoSave 才算真正开启
快捷键 Ctrl+,(Windows/Linux)或 Cmd+,(macOS)打开设置,搜索 “auto save”,找到 Files: Auto Save 后直接从下拉菜单选一个模式——但这只是图形界面操作,背后写入的是用户级 settings.json。关键点在于:files.autoSave 是字符串枚举,只接受四个值:"off"、"afterDelay"、"onFocusChange"、"onWindowChange"。设成 true、1 或留空,配置会被忽略。
推荐初学者直接选 "onFocusChange":编辑器一失焦(比如点终端、切标签页、点侧边栏)就保存,响应快、不易丢内容,且不依赖延迟参数。
afterDelay 模式必须配 files.autoSaveDelay
如果选了 "afterDelay" 却没反应,大概率是漏配了 files.autoSaveDelay。这个字段单位是毫秒,默认值在某些版本中不生效,必须显式写入。常见合理值:
-
"files.autoSaveDelay": 800—— WSL 或机械硬盘上更稳妥,避免高频 I/O -
"files.autoSaveDelay": 1200—— 大多数本地 SSD 项目够用 - 别设低于 500:可能和
editor.formatOnSave冲突,导致格式化未完成就二次保存,报错Unable to save 'xxx': The content of the file is newer
为什么改了全局设置却没保存?检查三个覆盖点
状态栏右下角没显示“已保存”或“正在保存中”,不是配置无效,而是被更高优先级规则压住了:
- 工作区设置(
.vscode/settings.json)存在且含"files.autoSave": "off",它会直接覆盖全局设置 - 语言专属配置偷偷关掉了:比如你在命令面板运行
Preferences: Configure Language Specific Settings给markdown设过"files.autoSave": "off",那所有.md文件都不走全局逻辑 -
editor.formatOnSave开启时,若 Prettier 或 ESLint 格式化失败(缺配置、语法错误、插件未激活),VS Code 会静默放弃本次保存,看起来像“没存”
临时文件和未命名文件永远不自动保存
标题栏显示 Untitled-1 的新标签页,或刚从 Git 拉下来但尚未修改过的文件(右上角无 ● 圆点),files.autoSave 对它们完全不生效。这是 VS Code 的设计行为:自动保存只作用于“已修改的、有路径的文件”。想让它参与自动保存流程,必须先按一次 Ctrl+S 指定路径并落盘一次。
真正容易被忽略的不是怎么开,而是哪些情况它根本不会动——没路径、没改动、被工作区或语言规则屏蔽、格式化插件中途失败,这四类问题占了失效案例的九成以上。











