Sublime Text需手动启用auto_reload才能自动重载外部修改的文件,但WSL2、原子写入或存在未保存编辑时仍可能失效;侧边栏刷新需单独执行Refresh Folders命令。

Sublime Text 默认不会自动重载外部修改的文件,必须手动开启 auto_reload 才能生效;但仅设这一项远远不够,尤其在 WSL2、原子写入或未保存编辑状态下,它可能静默失效甚至丢内容。
怎么启用自动重载:改对配置项,别碰默认设置
打开 Preferences → Settings,只编辑右侧「User Settings」(左侧是只读的),在里面添加:
{
"auto_reload": true
}
保存即生效,无需重启。注意:auto_reload 是唯一控制“文件内容自动重载”的核心开关,always_reload_on_change 是部分旧插件或文档误传的无效字段,Sublime 原生不识别——别加,加了也没用。
为什么改了还不生效?常见失效场景和应对
即使 auto_reload 设为 true,以下情况仍会导致自动重载失败:
- 你在 WSL2 中运行 Sublime:Linux 内核的
inotify在 WSL2 下不可靠,auto_reload基本不工作;建议改用 Windows 原生 Sublime 或换 VS Code - 文件被其他程序“原子写入”(如 Vim、Git、某些日志工具):它们先写临时文件再
rename,Sublime 监听到的是删除+新建事件,无法关联原标签页;此时可加"atomic_save": false(仅影响你保存行为,对外部写入无帮助) - 当前文件有未保存修改:Sublime 会直接丢弃你的编辑内容,不提示、不询问;这是设计行为,不是 bug
- 系统级文件监控被禁用或资源耗尽(如 Linux 的
inotify watch limit超限):需调高内核参数,或减少监听目录数
侧边栏文件树不刷新?那是另一个机制
文件内容自动重载 ≠ 侧边栏自动同步。侧边栏不更新,是因为 Sublime 默认不监听目录结构变化。要让它反映外部增删改,得手动触发:
- 快捷键:
Ctrl+Shift+P(Win/Linux)或Cmd+Shift+P(macOS),输入refresh folder list回车 - 菜单路径:
Project → Refresh Folders - 前提:项目必须已保存(
Project → Save Project As…),否则 Sublime 按临时会话处理路径,刷新无效 - 排除规则(如
"folder_exclude_patterns": ["node_modules"])会影响“刷新后看到什么”,但不影响刷新动作本身
最常被忽略的一点:自动重载只管“文件内容”,不管“文件是否存在”或“目录结构”。你删了一个 .js 文件,Sublime 不会关掉对应 tab,也不会从侧边栏消失——它连“那个文件被删了”都不知道,除非你手动刷新文件夹或重启。这既是性能取舍,也是 Sublime 的设计哲学:它不抢你对项目的控制权,但也绝不替你做假设。










