VSCode自动保存是内置功能,无需插件;必须将files.autoSave设为off/afterDelay/onFocusChange/onWindowChange之一,且afterDelay需同步配置files.autoSaveDelay,否则无效。

VSCode自动保存根本不需要插件
这是最常被误解的一点:VSCode 的 files.autoSave 是内置功能,和插件完全无关。装一堆“Auto Save”类插件不仅没用,还可能干扰原生行为。只要配置项写对、优先级理清,纯编辑器就能稳稳工作。
files.autoSave 必须设成字符串枚举值
它只接受四个合法值:off、afterDelay、onFocusChange、onWindowChange。设成 true、1、"true" 或留空,VS Code 会直接忽略——看起来像开了,其实等于没开。
-
afterDelay模式下,files.autoSaveDelay必须显式设置(比如1000),否则延迟为 0,敲一个字符就写一次盘,机械硬盘或 WSL 下明显卡顿 -
onFocusChange最适合日常:切标签页、点终端、点资源管理器都会触发保存,不打断输入节奏 -
onWindowChange风险高:微信浮窗弹出、系统通知、甚至 Alt+Tab 切浏览器都算“窗口失焦”,容易在代码写到一半时误存
为什么改了 settings.json 还不生效
不是配置错,是被更高优先级规则覆盖了:
- 右下角状态栏显示「工作区」?说明
.vscode/settings.json生效,它会盖掉用户级设置——打开命令面板运行Preferences: Open Workspace Settings (JSON)确认当前编辑的是哪份 - 语言专属设置能单独关掉自动保存,比如你在
settings.json里写了"[markdown]": { "files.autoSave": "off" },那所有.md文件都不会自动保存 - 如果同时启用了
editor.formatOnSave,而 Prettier 或 ESLint 找不到.prettierrc或.eslintrc.cjs,VS Code 会静默跳过本次保存,你以为“没存”,其实是格式化失败导致的
离线环境特别要注意的点
网络断了不影响自动保存本身,但会影响依赖它的其他环节:
- Volar 在离线 Vue 项目中“不接管 .vue 文件”,往往不是插件没装,而是右下角语言模式显示的是
Vue (Vetur)或只有Vue——必须手动点它 →Configure File Association for '.vue'→ 选Volar(作者必须是johnsoncodehk) -
node_modules/@vue/language-core缺失会导致 Volar 类型服务启动失败,哪怕你只是想让自动保存正常工作,也得提前把这包连同node_modules整个拷过去 -
tsconfig.json里没写"types": ["vue"]或"include"没包含"src/**/*.vue",Volar 就无法推导模板类型,后续任何基于类型的保存联动(如 ref 自动补全)都会失效
实际生效与否,不看插件列表,只看三点:配置值是否合法、是否被覆盖、有没有其他环节(比如格式化)在保存链路上悄悄失败。这些地方一漏,自动保存就变成“看起来开了,其实没动”。











