VSCode没有原生“修改即保存”(onType)模式,官方仅支持off、afterDelay、onFocusChange、onWindowChange四种字符串值;设为"onType"会被静默忽略,右上角●不消失且状态栏无保存提示,因其不在枚举列表中,所谓“输入即存”实为插件模拟。

VSCode 没有真正的“修改即保存”(onType)模式,官方不支持每次按键都写盘;所谓“输入即存”是误传或插件模拟行为,原生只接受 off、afterDelay、onFocusChange、onWindowChange 四种字符串值。
为什么 files.autoSave: "onType" 不生效
你在 settings.json 里写 "files.autoSave": "onType",VSCode 会静默忽略——设置不报错,但右上角修改标记(●)一直不消失,状态栏也不显示“已保存”。这是因为:onType 不在官方枚举列表中,搜索设置项也找不到它。所有文档里出现的“onType”要么是旧版错误引用,要么是第三方插件(如 Auto Save Plus)自行实现的逻辑,非 VSCode 原生能力。
afterDelay 怎么配才接近“改完就存”
这是最接近“即时感”的原生方案,本质是防抖:停顿超时才落盘,连续输入不触发。要让它响应更快、更稳:
- 必须同时设置
files.autoSaveDelay,推荐300~500(单位毫秒),低于200容易在 WSL 或网络盘上引发 I/O 抖动 - 确认没被工作区覆盖:右下角若显示「工作区」,点开设置顶部 Workspace 标签页,检查
files.autoSave是否被硬设为"off" - 关掉
editor.formatOnSave:Prettier/ESLint 等插件若开启此选项,会先保存、再格式化、再触发一次保存,导致光标跳动、内容错位,甚至看起来“没存” - 远程开发(SSH/WSL)下,
onFocusChange可能因焦点事件丢失而失效,此时afterDelay是唯一稳定选择
onFocusChange 是更实用的“伪实时”方案
它不依赖计时器,而是监听编辑器标签页失焦瞬间,对人机协作节奏更友好:
- 适用场景:你写几行 → 点击终端执行命令 → 回来继续写;切走那一刻,当前文件已落盘
- 触发范围比你想的宽:点击侧边栏、调试面板、资源管理器、甚至状态栏任意位置,只要当前编辑器标签失去焦点,就保存
- 多窗口注意:两个 VSCode 窗口各自独立响应,
onWindowChange则只在 Alt+Tab 级别失焦时才触发,且系统通知弹窗也会误触发,稳定性差
真正容易被忽略的是:自动保存只对“已修改”的文件生效——新建空文件、刚 checkout 未改动的文件,右上角没有 ●,怎么切焦点都不会保存;另外,files.autoSaveExclude 必须手动加,否则 dist/、__pycache__/ 这类目录会被反复刷盘,干扰构建和 Git 提交。


















