Notepad++ 文件自动重载需分三类设置:1.“启用文件更改自动检测”仅窗口获焦时检查一次;2.“Document Monitor”依赖系统通知,响应快但受权限/独占影响;3.“自动更新文件”启用系统级通知,但对WSL/OneDrive等支持弱。

Notepad++ 默认不检测外部修改,必须手动开启对应开关,且不同开关触发时机、生效范围、风险点完全不同——开错等于没开。
“启用文件更改自动检测”只在窗口获得焦点时检查一次
路径是:设置 → 首选项 → 通用 → 文件更改(M),勾选「启用文件更改自动检测」。
- 它不是后台持续监听,而是当你把 Notepad++ 窗口切回前台(比如 Alt+Tab 回来)时,才对当前打开的已保存文件做一次
os.path.getmtime()比较 - 默认行为是弹出
Reload from disk?对话框,让你选 Reload / Ignore / Cancel —— 不会静默覆盖你的编辑内容 - 如果同时勾选下方的「自动重载已修改的文件(不提示)」,就跳过确认直接刷新,适合只读日志场景,但有丢失未保存修改的风险
- 对 NFS/Samba/sshfs/RaiDrive 等远程挂载路径支持弱,部分 SMB 版本下可能完全失效
Document Monitor 是更底层的系统事件监听
路径是:设置 → 首选项 → MISC. → Document Monitor,必须同时勾选「Enable」和「Auto-reload if file is modified by another program」。
- 它依赖 Windows 的
FindFirstChangeNotification,响应比轮询快,但同样只监控已保存的文件(new 1这类未命名标签无效) - 文件被杀毒软件临时锁定、NTFS 权限受限、或被 Excel/Word 独占打开时,系统通知可能被拦截,导致监听失败
- 和「启用文件更改自动检测」互不干扰,可以共存;冲突时以 Document Monitor 为准(它更优先)
- 某些日志工具用原子保存(先写临时文件再 rename),会导致时间戳突变但 Notepad++ 收不到完整事件,从而漏检
“自动更新文件”开关藏在「其他」页签,不是轮询
路径是:设置 → 首选项 → 其他,勾选「自动更新文件」。
- 名字容易误解为“自动刷新”,实际是启用系统级文件变更通知,不耗 CPU,但前提苛刻:文件必须真实落盘(
fsync完成)、时间戳变更、且 Notepad++ 有权限读取 - 对 WSL 挂载路径、OneDrive 同步文件夹、符号链接目标文件等场景,常因路径解析或事件透传失败而静默不生效
- 若你开了「每次保存前创建备份」又同时启用自动重载,可能出现刚打几行字切出去再切回来,内容被磁盘旧版本刷掉的情况
- 该功能不影响撤销栈,重载后所有
Ctrl+Z记录清空
真正麻烦的不是找不到开关,而是你以为开了就万事大吉——它不报错、不提示、也不 fallback,只是安静地失效。高频小写入(如每秒多次追加)、缓冲未刷盘、权限变更、远程卷挂载方式,都可能让它变成摆设。需要强一致性时,别依赖它。











