sublime text唯一真正生效的自动保存机制是save_on_focus_lost: true,它仅在窗口失焦时对已修改且可写的文件执行一次真实磁盘保存,不支持实时或空闲触发;所有auto_save类字段均无效且可能干扰插件。

Sublime Text 没有“实时存盘”功能,所谓“一改就保存”是错觉;唯一真正生效、零依赖、写入磁盘的自动保存机制是 save_on_focus_lost —— 它只在你切出整个 Sublime 窗口时保存已修改且可写的文件,不触发静默覆盖或误存。
为什么save_on_focus_lost是唯一推荐的原生方案
这是 Sublime 官方代码中唯一定义、解析并执行的自动保存相关字段。它不依赖插件、不监听键盘、不轮询文件内容,而是响应操作系统级的窗口失焦事件,直接调用真实 save 命令落盘。
- 仅当窗口完全失去焦点(比如你点了终端、浏览器、桌面,甚至另一个 Sublime 窗口)才触发,内部 tab 切换不生效——这是设计,不是 bug
- 跳过未修改、只读、未命名(
untitled)文件,不会静默失败或报错 - 如果文件正被其他进程占用(如 tail -f 日志、Docker volume 挂载),保存会失败但不阻塞 UI,也不会掩盖错误
- 和
atomic_save可共存:atomic_save控制“怎么写”,save_on_focus_lost控制“什么时候写”
别碰auto_save、auto_save_interval这些字段
所有含 auto_save 前缀的配置项(包括 auto_save、auto_save_delay_in_seconds、auto_save_interval、auto_save_delay_ms)在 Sublime 官方源码中根本不存在。它们不会生效,还可能引发问题:
- Sublime 解析器会静默忽略,但某些插件(如 AutoSave)会误读这些字段,以为“原生已启用”,从而禁用自身逻辑
- 拼写不统一(
auto_save_delay_millisecondsvsauto_save_delay_in_ms)在 v4.1+ 后更易失效 - 一个 JSON 语法错误(比如少逗号、引号没闭合)会导致整个用户设置加载失败,
save_on_focus_lost也会跟着失效
想实现“停笔几秒就保存”?必须用 AutoSave 插件,且配置位置不能错
原生机制不支持空闲触发,AutoSave 是目前最稳定的选择,但它和 save_on_focus_lost 互斥,同时开启会导致重复保存、I/O 卡顿,甚至在编辑被外部进程轮询的大日志时引发冲突。
- 先在 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(建议 ≥1500,低于 1000 容易卡 UI) - 对大型 SQL 或日志文件,加
"excluded_patterns": ["*.log", "*.sql"]避免频繁写入拖慢响应
最容易被忽略的一点:很多人把 AutoSave 的配置写进通用 User Settings,结果完全不生效——因为插件只读取自己专属的 Settings 文件。配置错位置,等于没配。











