auto_reload是Sublime Text唯一有效的自动重载开关,设为true后才可能静默重载外部修改的已打开文件;需仅在用户设置中添加合法JSON格式的"auto_reload": true,避免使用无效字段如always_reload_on_change,并排查原子写入、WSL2 inotify失效及未保存编辑覆盖等三大失效场景。

auto_reload 是唯一生效的自动重载开关,设为 true 后,Sublime Text 才可能静默重载外部修改的已打开文件;但该功能极易因环境或写入方式失效,不是加了就一定管用。
怎么正确启用 auto_reload?只改用户设置,别碰默认配置
Sublime Text 原生不监听文件系统,auto_reload 是它唯一认可的自动重载控制项。其他字段如 always_reload_on_change、watch_files 全是无效配置,Sublime 完全不识别——加了不仅没用,还可能因 JSON 语法错误导致整个用户设置失效。
操作步骤极简:
- 按
Ctrl+Shift+P(Windows/Linux)或Cmd+Shift+P(macOS),输入Preferences: Settings – User回车 - 在右侧用户配置中添加一行:
"auto_reload": true - 确保 JSON 格式合法:前后逗号位置正确、引号闭合、大括号成对
- 保存即生效,无需重启 Sublime
auto_reload 不生效?三大静默失效场景必须排查
即使配置正确,auto_reload 也可能完全不响应,且不报错、不提示。常见原因有:
-
原子写入绕过监控:Vim / Git / webpack 等工具默认先写临时文件再
rename(),inotify/fsevents 收不到“内容变更”事件,只看到“删除+新建”,Sublime 无法关联原标签页 -
WSL2 环境下 inotify 失效:尤其对
/mnt/c/这类 Windows 挂载路径,auto_reload基本不可靠;建议改用 Windows 原生 Sublime 或换 VS Code -
未保存编辑时直接覆盖:只要当前文件有未保存修改,
auto_reload: true触发后会静默丢弃全部编辑内容,无弹窗、无备份、无暂停
验证是否真失效?终端执行 touch 文件名,看 Sublime 是否响应。若不响应,说明是环境或写入机制问题,不是配置没生效。
auto_reload 和 reload_modified 的行为差异必须分清
这两个配置常被混淆,但触发逻辑完全不同:
-
auto_reload: true依赖系统级监听(inotify/fsevents),检测到磁盘变更后**立刻重载**(前提是无未保存修改) -
reload_modified: true(默认开启)是被动检查:只有你**切换回该标签页**时,才比对磁盘mtime并弹出「是否重新加载?」对话框 - 两者可共存,但行为互斥:若
auto_reload生效,则reload_modified不再弹窗;若auto_reload失效,reload_modified就是你唯一的提示机会
想保留人工确认权?关掉 auto_reload,确保 reload_modified 是 true 即可。
侧边栏不刷新、文件删了还在、状态栏没提示……都是设计使然
auto_reload 只负责编辑区文本内容更新,对项目结构完全无感:
- 外部删除一个已打开的文件,Sublime 编辑区可能还显示旧内容,侧边栏仍挂着文件名,图标也不变灰
- 新增或重命名文件,侧边栏不会自动同步,必须手动执行
Refresh Folders(快捷键Ctrl+Shift+P→ 输入并回车) - 侧边栏刷新前提:项目必须已保存(
Project → Save Project As…),否则 Sublime 按临时会话处理路径,刷新无效 - 状态栏从不显示“已外部修改”,Sublime 原生不提供持续同步状态提示
最常被忽略的一点:auto_reload 只管“内容是否最新”,不管“文件是否存在”或“目录是否干净”。它不抢你对项目的控制权,但也绝不替你做假设。


















