Notepad++ 无原生“关闭未修改文件”功能;需用 Python Script 插件执行倒序遍历脚本,仅关闭有路径且 editor.isModified() 为 False 的标签页,操作前须保存所有并禁用干扰插件。

Notepad++ 没有原生“关闭未修改文件”的功能
直接告诉你结论:Ctrl+Alt+W 是关闭所有标签页,不管改没改;文件 → 更多关闭方式 → 关闭当前以外所有文件 也照关不误——它不看 editor.isModified() 状态。Notepad++ 的 UI 层根本没暴露“是否已修改”这个判断给用户操作链,所以菜单、快捷键、右键菜单全都不支持按修改状态过滤。
唯一可靠方式是用 Python Script 插件执行脚本
必须提前安装 Python Script 插件(Plugin Admin → 搜索安装),否则这条路走不通。脚本逻辑很明确:遍历每个标签页,只关闭同时满足两个条件的:
-
notepad.getBufferFilename(i)返回非空路径(排除新建空白页、无名缓冲区) -
editor.isModified() == False(确认内容未被改动)
示例片段(可直接粘贴进 Python Script 的「编辑脚本」里运行):
for i in range(notepad.getNbTab() - 1, -1, -1):
if notepad.getBufferFilename(i) and not editor.isModified():
notepad.closeTab(i)注意顺序:倒序遍历(range(..., -1, -1)),避免关掉一个后索引错位跳过下一个。
容易踩的坑:新建页、固定页、插件干扰
常见误判点不是逻辑写错,而是环境理解偏差:
- 新建空白标签页(无路径、无内容)
editor.isModified()返回False,但脚本里notepad.getBufferFilename(i)为空,自动跳过——这是对的,不用额外处理 - 「固定标签」不影响
isModified()判断,也不阻止关闭,它只影响「关闭其他标签」和会话恢复,别指望它能保命 - 如果装了 Document Monitor 或 Session Manager 类插件,它们可能在关闭后自动重载书签或标签状态,建议先禁用验证是否干扰
操作前必须做的两件事
不执行这两步,再准的脚本也救不了刚改完还没存的文件:
- 先按
Ctrl+Shift+S保存所有——否则isModified()还是True,你本想关的“已保存未改”文件会被漏掉 - 确认没开着「搜索 → 标记所有」(
Ctrl+M),它的临时标记和书签视觉一样,但不参与isModified()判断,也不会被脚本关掉,但它可能让你误以为某些标签“该关却没关”
脚本跑完,没星号(*)的标签页基本就清干净了,但得记住:这动作不可撤销,也没确认框——和 Ctrl+Alt+W 一样,手抖前先想清楚。


















