notepad++ 不支持真正的代码修改实时监控,仅能检测已保存文件的变更,且响应非即时;需启用 document monitor 并根据场景选择自动更新文件或轮询检测。

Notepad++ 没有真正意义上的“代码修改实时监控”,它只支持对已保存文件的变更检测,且响应不是即时的——关键取决于你启用的是哪套机制、文件状态是否满足触发条件,以及外部修改是否被系统事件正确上报。
Document Monitor 必须启用,否则所有自动行为都无效
这是底层开关,不勾选就等于关掉了整个监控链路。路径是:设置 → 首选项 → MISC.(杂项)→ 勾选 Document Monitor。下方两个选项按需配合:
-
Enable:必须勾选,否则其他设置全失效 -
Auto-reload if file is modified by another program:勾选后静默重载;不勾则弹出Reload / Ignore / Cancel提示框
注意:Document Monitor 只监控已保存的文件,新建未保存标签(显示为 new 1)完全不参与检测。
“自动更新文件”和“文件状态自动检测”是备选方案,不是替代
三者逻辑不同,不能互相代替:
-
自动更新文件(设置 → 首选项 → 其他):依赖 Windows 系统级通知,响应快但对网络盘、OneDrive、WSL2 路径常失效 -
文件状态自动检测(设置 → 首选项 → 通用 → 文件更改):纯轮询,每 2 秒调用一次os.path.getmtime(),适合 SMB/OneDrive 场景,但会增加磁盘 I/O - 想缩短轮询间隔?改
config.xml中的interval="2000"为500,重启生效
它们可以共存,但没必要全开;优先试 自动更新文件,失败再切到轮询模式。
为什么改了代码,Notepad++ 还没反应?常见断链点
不是设置没开,而是触发链在某个环节断了:
- 你一直没把 Notepad++ 窗口切回来:
Refresh modified files automatically只在获得焦点时检查一次 - 外部程序用了原子保存(如 VS Code 默认行为):先写
file.txt~再rename,Windows 下可能丢失 inotify 事件 - 文件在 OneDrive 同步目录、
/mnt/c/(WSL2)、或网络驱动器(Z:\):系统事件监听不可靠,轮询反而更稳 - Notepad++ 以管理员身份运行,而改文件的程序没管理员权限:UAC 隔离导致无法读取时间戳
- 文件被其他进程独占锁定(如 Excel 打开 .csv):Notepad++ 读取 mtime 失败,直接跳过检测
想看日志追加效果?别信“监视日志”,用 NppExec + PowerShell 实现真 tail -f
Notepad++ 自带的“监视日志”(View → Monitoring log)不是流式监听,只在焦点切换或手动刷新时检查一次,不会自动滚到底部,也不高亮新增行。
实操建议:
- 安装
NppExec插件(Plugins → Plugins Admin) - 按
F6打开控制台,粘贴并保存脚本:cmd /c powershell -Command "Get-Content '<code>$(FULL_CURRENT_PATH)' -Wait -Tail 100" - 运行脚本后,窗口持续输出新增内容,自动滚动到底部
- 路径含空格或中文?单引号必须包裹
'$(FULL_CURRENT_PATH)',否则 PowerShell 报错 - 若日志被独占写入(如 IIS),可换用
Get-Content -ReadCount 1 | ForEach-Object { $_ }轮询兼容
真正的文件夹级新增监控(比如监听 src/ 下新 .js 文件)Notepad++ 做不了,得靠 watchdog 或 inotifywait 这类外部工具——它只负责打开和编辑,别让它背监控的锅。











