VSCode自动保存应选onFocusChange:当前编辑器失焦(如切终端、换标签页)即刻保存,防丢效果最佳;需配合files.hotExit和首次Ctrl+S指定路径才真正可靠。

VSCode 默认不自动保存,设成 afterDelay 还可能丢代码——真正防丢,得用 onFocusChange + files.hotExit 双配置,且新建文件必须先按一次 Ctrl+S。
files.autoSave 该选哪个值?
它不是开关,是字符串枚举,只能填这四个之一:off、afterDelay、onFocusChange、onWindowChange。选错模式,等于没配:
-
onFocusChange:当前编辑器标签页失去焦点(点终端、切另一个 .ts 文件、点侧边栏)就立刻保存——响应快、不易丢,适合绝大多数人 -
afterDelay:必须同步配files.autoSaveDelay(单位毫秒),否则延迟可能为 0,高频刷盘;设 1000~1500 是常见值,但崩溃前那 1 秒改的内容仍会丢 -
onWindowChange:整个 VS Code 窗口失焦才保存(Alt+Tab、微信浮窗盖住都会触发),容易误存未完成草稿 -
off:默认值,完全关闭,每次改完都得手动Ctrl+S
为什么改了设置却没保存?
90% 不是配置错了,而是被更高优先级规则覆盖或插件干扰:
- 工作区设置(
.vscode/settings.json)会覆盖用户级设置,打开项目后检查是否含"files.autoSave": "off" - 语言专属配置会单独生效,比如
"[markdown]": { "files.autoSave": "off" },会让所有.md文件无视全局规则 -
editor.formatOnSave开启后,若 Prettier/ESLint 格式化失败(缺配置、语法错、插件未激活),VS Code 可能静默放弃本次保存 - 新建的
Untitled-1文件永远不会自动保存,必须先Ctrl+S指定路径,否则files.autoSave完全不启动
防丢不能只靠自动保存
自动保存只管“写入磁盘”,但崩溃、断电、强制退出时能否恢复,还得靠另外两个配置:
-
files.hotExit设为onExitAndWindowClose(默认值):关窗口时不保存也能保留未保存内容,重启后还原为“已修改未保存”状态 -
workbench.startupEditor推荐设为lastSession:重启后恢复上次打开的所有编辑器和光标位置 - VS Code 本身不生成
.bak或~备份文件,所谓“备份”其实是 Local History 插件(存于.history/)或 Git 提交——二者缺一不可
真正卡住人的地方,往往是 Untitled-1 文件没先保存、工作区设置悄悄覆盖了全局配置、或者格式化插件在保存瞬间静默失败——这些都不会报错,只会让你以为“设置了却没用”。











