vscode默认不自动保存,必须将files.autosave设为off/afterdelay/onfocuschange/onwindowchange之一;设true或数字无效,且需同步配置files.autosavedelay(afterdelay模式)、排查工作区覆盖、语言专属设置及格式化插件干扰。

VSCode 默认不自动保存代码,必须显式配置 files.autoSave 才生效;选错值、漏配依赖项或被工作区/插件覆盖,都会导致“看着开了却没存”。
files.autoSave 只能设这四个值
它不是布尔开关,不能填 true 或 false,只能是以下之一:
-
off:彻底关闭(默认值) -
afterDelay:编辑停止后延迟保存 —— 必须同时设files.autoSaveDelay(单位毫秒),否则默认为 0,可能高频刷盘 -
onFocusChange:当前编辑器失去焦点时立即保存(比如点终端、切标签页、点侧边栏) -
onWindowChange:整个 VS Code 窗口失焦才保存(Alt+Tab 切出、微信浮窗盖住也会触发,容易误存)
图形界面里搜 “auto save” 选下拉菜单,本质就是往 settings.json 写这个字段。别只选完就走,尤其选 afterDelay 时记得补上 files.autoSaveDelay。
为什么改了设置却没反应
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 插件生效):
- 在
.vscode/settings.json中加一行:"code-runner.saveFileBeforeRun": true - 它会在每次执行
code-runner.run(快捷键Ctrl+Alt+N)前强制调用一次保存 - 注意:对
launch.json调试、自定义tasks.json或 shell 脚本无效
远程开发(WSL / SSH)下的实际表现
自动保存逻辑照常运行,但 IO 延迟和焦点定义会变:
-
afterDelay的实际延迟可能比设定值高 200–500ms,尤其项目路径在/mnt/c/(Windows 文件系统挂载点) - 建议把项目移到 WSL 原生路径(如
~/project),避免频繁卡顿 -
onFocusChange在远程场景下仍可靠,因为焦点变化由 VS Code 客户端本地判断,不依赖远端响应
最易被忽略的是:未命名文件(Untitled-1)或只读文件(权限不足 / 被其他进程占用)根本不会触发任何模式的自动保存,VS Code 也不报错 —— 检查状态栏右下角是否有 ● 标志,比看设置更直接。











