sublime text 唯一真正生效的自动保存机制是 save_on_focus_lost:窗口失焦时立即保存已修改且可写的文件;其他 auto_save 相关配置项在官方代码中不存在,添加后不仅无效,还可能导致 autosave 插件失效。

Sublime Text 唯一真正生效、无需插件、写入磁盘的自动保存机制是 save_on_focus_lost:窗口失焦时立刻保存已修改且可写的文件。其他所有带 auto_save 字样的配置项(如 auto_save、auto_save_interval)在官方代码中根本不存在,加了不仅不生效,还可能让 AutoSave 插件静默失效。
怎么正确启用 save_on_focus_lost 防崩溃丢数据
这是最轻量、最可靠、零依赖的防丢方案——你切到终端、浏览器或桌面的瞬间,所有已改未存的文件就真实落盘,不是缓存,不是延迟,就是一次 write()。
- 按
Ctrl + ,(Windows/Linux)或Cmd + ,(macOS)打开设置,确保编辑的是右侧「User Settings」 - 在花括号
{}内添加一行:"save_on_focus_lost": true,注意英文双引号、小写true、末尾逗号(如果前面有其他配置) - 按
Ctrl + S保存该文件,立即生效,无需重启 - 验证方法:改几行字 → 点击桌面或终端 → 切回 Sublime → 查看文件修改时间是否更新
它跳过未改动、只读、新建未命名(untitled)文件——这是设计,不是 bug。多窗口模式下,从窗口 A 切到窗口 B 也算失焦,会触发;但仅在同一个窗口内切换 tab 不会。
为什么 auto_save、auto_save_delay_in_seconds 这些字段必须删掉
这些键名在 Sublime 官方源码里查无此物。它们不会触发任何逻辑,但会引发三类实际问题:
-
"auto_save": true或"auto_save_interval": 60被解析器静默忽略,既不报错也不生效 - JSON 语法错误(比如少逗号、引号没闭合)会导致整个用户设置加载失败,连
save_on_focus_lost都跟着失效 - AutoSave 插件(v4.1+)会误判这些字段为“原生已启用”,从而禁用自身核心逻辑,导致自动保存彻底失灵
- 混用拼写如
auto_save_delay_ms/auto_save_delay_milliseconds/auto_save_delay_in_ms,在最新版中只有后者有效,其余已失效
想“停笔几秒就保存”?必须关掉 save_on_focus_lost 再配 AutoSave 插件
原生机制不支持空闲触发,这个需求只能靠插件,但二者互斥——同时开启会导致同一文件被重复保存,I/O 浪费,编辑大日志或 SQL 文件时可能卡死或冲突。
- 先在 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": 3000}
auto_save_delay_milliseconds 是唯一有效的延迟字段,单位是毫秒。设太小(如 500)会边打字边保存,UI 卡顿;对 >5MB 的日志或 SQL 文件,建议 ≥3000。注意:该插件不感知外部修改(如 Git checkout、命令行直接改),只响应 Sublime 内部编辑动作。
真正容易被忽略的是:新建未命名文件(untitled)永远不被 save_on_focus_lost 保存,哪怕你切出窗口;而 AutoSave 插件默认也不处理它——必须先手动保存一次,生成路径,后续才能被自动保存机制捕获。这个行为没有绕过方式,是底层设计决定的。











