VSCode全局设置应填afterDelay(推荐)、onFocusChange或onWindowChange之一;填off为默认关闭,填true/数字等非法值无效;afterDelay必须同步配置files.autoSaveDelay(如1000),否则可能高频刷盘。

VSCode 默认不自动保存,全局设置必须显式配置 files.autoSave,且只能设为四个合法字符串值之一,填 true、false 或数字会完全失效。
全局设置该填什么值?
打开设置(Ctrl + , 或 Cmd + ,),搜索 files.autoSave,从下拉菜单选一个值:
-
off:彻底关闭(默认值) -
afterDelay:编辑停止后延迟保存 —— 必须同步配置files.autoSaveDelay(单位毫秒,推荐1000~1500) -
onFocusChange:当前编辑器标签页失去焦点即保存(切终端、点侧边栏、换文件标签都会触发) -
onWindowChange:整个 VS Code 窗口失焦才保存(Alt+Tab 切出、微信浮窗盖住也会触发,不稳定)
注意:afterDelay 模式下若漏配 files.autoSaveDelay,VS Code 可能用 0 毫秒延迟,导致高频刷盘甚至卡顿。
为什么改了全局设置却没生效?
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 可能跳过自动保存逻辑
运行代码前想自动保存?files.autoSave 不管用
VS Code 的 files.autoSave 完全不响应“运行”动作 —— 无论你按 Ctrl+F5、右键 Run Code 还是点调试按钮,它只监听编辑状态或焦点变化。
真正绑定“运行前保存”的,只有 code-runner.saveFileBeforeRun(仅对 formulahendry.code-runner 插件生效):
"code-runner.saveFileBeforeRun": true
它会在每次执行 code-runner.run(快捷键 Ctrl+Alt+N)前强制调用一次保存。对 launch.json 调试、自定义 tasks.json 或 shell 脚本无效。
远程开发(WSL / SSH)下的实际表现
自动保存逻辑照常运行,但 IO 延迟和焦点定义会变:
-
afterDelay的实际延迟可能比设定值高 200–500ms,尤其项目路径在/mnt/c/(Windows 文件系统挂载点) -
onWindowChange在远程环境下容易因窗口焦点行为异常而失效,onFocusChange更稳定 - 建议把项目移到 WSL 原生路径(如
~/project),避免跨文件系统写入带来的不确定性
真正容易被忽略的是:files.autoSave 只对“已修改”的文件生效 —— 新建空文件、刚拉取未改动的文件右上角没有圆点(●),不会触发自动保存。


















