vscode默认不自动保存,需手动配置files.autosave为afterdelay、onfocuschange或onwindowchange;常见失效原因是工作区设置覆盖、扩展拦截(如eslint格式化失败)、延迟参数未配或文件未处于“已修改”状态。

VSCode 默认不自动保存文件,改完代码必须按 Ctrl+S(Windows/Linux)或 Cmd+S(macOS)才写入磁盘;所谓“自动保存”是可选功能,且必须选对模式、配好参数,否则看起来像失效。
为什么改了 files.autoSave 却没反应
90% 的“没反应”不是配置错,而是被更高优先级规则覆盖或拦截:
- 工作区设置(
.vscode/settings.json)会覆盖用户级设置;右下角显示「工作区」时,务必打开该文件检查是否写了"files.autoSave": "off" - 语言专属配置会单独生效:比如你为
markdown设了"files.autoSave": "off",那所有.md文件都不走全局规则 -
editor.formatOnSave开启后,若 Prettier/ESLint 格式化失败(缺配置、语法错误、插件未激活),VS Code 会静默取消本次保存,状态栏显示“已保存”,但磁盘内容仍是旧的 - 文件路径匹配了
files.watcherExclude或files.exclude(如"**/dist/**"),VS Code 可能跳过自动保存逻辑
afterDelay 模式必须配 files.autoSaveDelay
files.autoSave 是字符串枚举,不是布尔开关;设成 true、1 或 "true" 都会被忽略,配置不生效。选 afterDelay 后,必须同步设置 files.autoSaveDelay(单位毫秒),否则延迟默认为 0,等于每敲一个字符都尝试保存——在 WSL、远程容器或机械硬盘上极易卡顿。
微软正式发布 Visual Studio Code 1.118 版本 。本次更新重点强化了 AI 开发体验与企业管理能力,其中最引人注目的是新增 Copilot CLI 远程控制功能,允许开发者通过手机或网页远程监控和接管 AI 会话 。同时,为了提高 AI 的运行性价比,新版本优化了令牌缓存策略以降低成本 。此外,1.118 版还引入了 Chronicle 本地历史追踪、TypeScript 7.0 支持以及更严格的企业级访问管控 。
- 推荐值:800~1500,兼顾防抖与响应;设 300 容易和格式化冲突,设 3000 又可能切走就忘了改了啥
- 注意:这个延迟只对“停止输入”起作用;连续打字不会触发,停顿超过设定时间才落盘
- 延迟保存不保证“实时”:如果编辑后立刻切到终端查日志,可能还没来得及触发保存
onFocusChange 触发时机比你想的更细
它监听的是“当前编辑器标签页是否失去焦点”,不是整个窗口,也不是应用级焦点。这意味着:
- 从
a.ts标签页点击切换到b.ts→a.ts立即保存 - 点击终端、调试控制台、搜索面板、甚至资源管理器侧边栏 → 当前编辑的文件保存
- 但最小化 VS Code 窗口、弹出系统通知、微信浮窗盖住 —— 这些不会触发
onFocusChange,只影响onWindowChange - 远程开发(WSL / SSH)下,
onFocusChange更稳定;onWindowChange在某些宿主系统中可能无法正确识别“失焦”
真正容易被忽略的是:自动保存只对“已修改”的文件生效——新建空文件、刚拉取未改动的文件右上角没圆点(●),此时无论怎么切焦点都不会触发保存;另外,files.autoSaveExclude 必须手动加,否则 dist/、build/、__pycache__/ 这类目录会被反复写入,干扰构建和 Git 提交。










