sublime text唯一真正有效的自动保存方案是原生save_on_focus_lost(失焦保存)或autosave插件(空闲保存),二者互斥;其他所有auto_save类字段均无效且可能破坏配置或干扰插件。

Sublime Text 没有“一改就存”的实时自动保存,但有两种真正有效、不丢数据的方案:原生 save_on_focus_lost(推荐绝大多数人用),或插件 AutoSave(仅当明确需要空闲触发时才选)。其他所有带 auto_save 的字段,官方源码里根本不存在,加了等于白写,还可能让配置失效或插件失灵。
怎么正确启用原生失焦自动保存(防断电/崩溃丢内容)
这是 Sublime Text 唯一内置、无需插件、真实写入磁盘的机制。它只在你点击终端、浏览器、桌面等外部程序时,对已修改、可写、已有路径的文件执行一次系统级 write()。
- 按
Ctrl + ,(Windows/Linux)或Cmd + ,(macOS)打开设置,确保编辑的是右侧「User Settings」 - 在已有 JSON 的
{}内添加一行:"save_on_focus_lost": true,注意英文双引号、小写true、前面若有其他字段需补逗号 - 按
Ctrl + S保存,立即生效,无需重启 - 验证方法:改几行字 → 点击桌面 → 切回 Sublime → 查看文件修改时间是否更新
- 它天然跳过未修改、只读、新建未命名(
untitled:)文件——这不是 bug,是设计
为什么 auto_save、auto_save_interval 这些字段全无效
这些键名在 Sublime 官方源码和文档中从未定义。JSON 解析器会静默忽略它们,既不报错也不触发任何行为。
-
"auto_save": true、"auto_save_delay_in_seconds": 1、"auto_save_interval": 60全部无效 - 如果同时装了
AutoSave插件,它可能误读这些字段,以为“原生已启用”,从而禁用自己的核心逻辑,导致自动保存彻底失灵 - 网上混用的
auto_save_delay_ms、auto_save_delay_in_ms等,在AutoSavev4.1+ 中只有auto_save_delay_milliseconds起效 - 一个语法错误(比如少引号、多逗号)会让整个 User Settings 加载失败——连
save_on_focus_lost都不工作
想“停笔几秒就保存”?必须用 AutoSave 插件,且配置入口不能错
save_on_focus_lost 是失焦触发,不是空闲触发。要实现空闲保存(比如打字停顿 2 秒就落盘),必须关掉它,再装插件。
- 先在 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(单位毫秒,别设低于 1500) - 处理几百 MB 的 SQL 日志或大日志文件时,建议 ≥3000,避免频繁 I/O 卡 UI 或触发文件锁冲突
最容易被忽略的细节:什么情况下 save_on_focus_lost 不会触发
它只响应「整个 Sublime 窗口失去焦点」这个事件,不是 tab 切换、不是命令面板呼出、也不是侧边栏点击。
- 你在 Sublime 内部切换 tab、新建 tab、甚至打开另一个 Sublime 窗口(多窗口模式),只要没点到外部进程(如 Terminal、Chrome、微信、桌面),就不会触发
- 文件路径含中文或空格不影响,但必须已有合法路径且可写;
/etc/hosts、Docker volume 挂载点、WSL 权限受限目录等只读位置会静默跳过 - 多窗口模式下,从窗口 A 切到窗口 B,算失焦,会触发保存;但从窗口 A 的 tab1 切到 tab2,不算
- 新建未命名文件(
untitled:)永远不触发——因为 Sublime 不知道该存到哪
复杂点在于:两种方案互斥,不能共存;而配置错误(比如写错位置、拼错字段、语法出错)往往不会报错,只会静默失效。最稳妥的做法是,先用 save_on_focus_lost,真有空闲保存需求再切插件,并严格区分配置入口。











