save_on_focus_lost设置不生效的常见原因包括:误改左侧只读默认设置而非右侧user settings;json格式错误(如中文引号、多余逗号)导致整行被静默忽略;文件未命名(untitled)或路径只读;hot_exit为false且未手动保存导致状态误判;autosave插件与原生设置冲突;packages/user目录权限不足或被云同步工具锁死;atomic_save在nas/onedrive等环境触发rename失败。

save_on_focus_lost 设置不生效的常见原因
设了 "save_on_focus_lost": true 却没反应,基本不是 Sublime 坏了,而是配置没落到正确位置或格式出错:
- 误改了左侧 Default Settings(只读),实际应编辑右侧 User Settings 面板
- JSON 格式错误:多写了逗号、引号用成中文、冒号后少空格——Sublime 不报错,但整行被静默忽略
- 文件从未保存过(仍叫
untitled),Sublime 默认不会自动创建文件,此时会弹出保存对话框,save_on_focus_lost不触发 - 启用了
"hot_exit": false且上次退出前没手动保存,重启后恢复的是旧状态,容易误判为“没保存”
AutoSave 插件和原生设置冲突怎么办
同时启用 save_on_focus_lost 和 AutoSave 的 auto_save_on_focus_lost 模式,会导致重复保存,尤其在大文件或网络挂载路径下卡顿明显:
- 优先用原生
save_on_focus_lost:轻量、稳定、无需插件 - 只在需要“编辑中无感保存”时(如写 Markdown 同时预览),才装 AutoSave 插件,并仅启用
"auto_save_delay_milliseconds": 1000这类延迟模式 - 禁用 AutoSave 的
auto_save_on_focus_lost,避免与原生逻辑打架
Preferences.sublime-settings 保存失败导致设置不生效
用户设置文件本身存不进去,后续所有配置都白搭。根本原因是 Packages/User/ 目录权限异常或被同步工具锁死:
- 检查路径权限:
ls -ld ~/.config/sublime-text-3/Packages/User(Linux/macOS)或icacls "%APPDATA%\Sublime Text 3\Packages\User"(Windows),确认当前用户有写权限 - 临时关闭 OneDrive、Dropbox 或 Windows Defender 实时保护——它们常拦截
rename操作,而 Sublime 默认开启atomic_save,先写 .tmp 再重命名 - 修复属主(别用
chmod 777):sudo chown -R $USER:$(id -gn $USER) ~/.config/sublime-text-3/Packages/User,再补chmod -R u+rw - 改完必须重启 Sublime,否则内存缓存未刷新,新设置不加载
文件编码或 atomic_save 导致“静默失败”
点了 Ctrl+S 没提示、时间戳不变、控制台也无日志——这种“假失效”最让人抓狂,往往和底层写入机制有关:
-
atomic_save: true(默认)时,Sublime 先写临时文件再rename;NAS、OneDrive “按需同步”目录、某些杀软会拦截rename,结果就是内容没更新 - 临时验证:在用户设置里加
"atomic_save": false,再试保存;长期关闭不推荐,可能丢失断电时的数据 - 执行
view.encoding()查看当前文件编码,若返回Undefined或明显不匹配(如中文文件显示Western (Windows 1252)),手动设为UTF-8再保存
真正难搞的从来不是开关本身,而是权限链路上某个环节被云同步、杀软或父目录 w 权限缺失悄悄卡住——修完记得重启,否则连 save_on_focus_lost 都懒得理你。











