启用 save_on_focus_lost 是 sublime text 唯一真正写入磁盘、防断电丢失的原生机制;其他 auto_save 类配置项在官方源码中不存在,添加无效且可能干扰插件。

直接结论:启用 save_on_focus_lost 是 Sublime Text 唯一真正写入磁盘、防断电丢失的原生机制;其他所有带 auto_save 的配置项在官方源码中根本不存在,加了等于白加,还可能让插件失灵。
怎么正确启用 save_on_focus_lost 防断电丢数据
它不是后台缓存,而是在你点击终端、浏览器、桌面等外部程序时,立刻对已修改且可写的文件执行系统级 write()——断电前最后一次失焦,就是你最后能保住的内容。
- 按
Ctrl + ,(Windows/Linux)或Cmd + ,(macOS)打开设置,确保编辑的是右侧「User Settings」 - 在花括号
{}内添加一行:"save_on_focus_lost": true,注意英文双引号和末尾逗号位置 - 按
Ctrl + S保存该文件,立即生效,无需重启 - 验证方法:改几行字 → 点击桌面 → 切回 Sublime → 查看文件修改时间是否更新
它天然跳过未修改、只读、新建未命名(untitled:)文件——这不是 bug,是设计。路径含中文或空格也不影响,但文件必须已有合法路径且可写。
为什么必须删掉所有 auto_save 类字段
这些键名(如 auto_save、auto_save_interval、auto_save_delay_in_seconds)在 Sublime 官方源码里根本不存在。JSON 解析器会静默忽略它们,既不报错也不触发任何行为。
- 某些版本的 AutoSave 插件会误读这些字段为“原生已启用”,从而禁用自身逻辑,导致自动保存彻底失灵
- 拼写混乱(如
auto_save_delay_msvsauto_save_delay_milliseconds)在 v4.1+ 中已部分失效,升级后突然不工作 - 一个语法错误(比如少逗号、引号没闭合)会让整个用户设置加载失败,连
save_on_focus_lost都跟着失效
想“停笔几秒就存”?必须关掉 save_on_focus_lost,再配 AutoSave 插件
原生机制不支持空闲触发,save_on_focus_lost 和 AutoSave 插件互斥。同时开启会导致同一文件被重复保存,编辑大日志或被 Webpack / nodemon 监听时容易卡死或冲突。
- 先在 User Settings 中删掉或注释掉
"save_on_focus_lost": true - 按
Ctrl + Shift + P→ 输入Package Control: Install Package→ 安装AutoSave(作者 randy3k,v4.1+) - 进
Preferences → Package Settings → AutoSave → Settings – User(不是通用 User Settings!) - 写入最小可用配置:
{"auto_save_on_idle": true, "auto_save_delay_milliseconds": 1500}
auto_save_delay_milliseconds 别设低于 1000;500ms 容易边打字边保存,UI 卡顿;处理几百 MB 的 SQL 日志时建议 ≥3000,避免频繁 I/O 拖慢响应。
最容易被忽略的细节
save_on_focus_lost 只在「整个窗口失焦」时触发——切 Tab、开新窗口、甚至拖 Sublime 到另一个显示器但没点外部应用,都不算;必须点到终端、浏览器、微信、桌面等外部进程才生效。另外,如果文件正被其他进程(如 Git LFS、rsync、IDE 同步工具)占用写锁,保存会静默失败,Sublime 不提示也不重试。











