Notepad++无法直接去重,可靠方法有两种:一是“列编辑+正则”组合技(加行号→排序→正则删重复→删行号),稳定兼容所有版本;二是用PythonScript插件运行脚本,保留首次出现顺序。

Notepad++ 自带功能无法直接去重,必须用插件或正则绕过
Notepad++ 默认不提供“删除重复行”按钮,编辑 → 行操作 里只有排序和移除空行,没有去重逻辑。强行用查找替换模拟会漏判(比如部分匹配、跨行干扰),真正可靠的方式只有两个:装 TextFX 插件(旧版)或用内置的列编辑+正则组合技。
推荐方案:用“列编辑 + 正则”手动标记再删(无需插件,兼容所有版本)
这个方法稳定、可控,适合中等规模文本(几万行内)。核心思路是先给每行加唯一前缀,再按前缀排序,让重复行相邻,最后用正则批量删掉后面那个。
- 在每行开头插入行号:
编辑 → 列编辑模式(Alt+C)→ 输入数字 → 起始为1,增量为1,右对齐,然后回车确认 - 全选 →
编辑 → 行操作 → 排序行(升序),此时相同内容的行会挨在一起 - 执行正则替换:
查找目标填^(.*\r?\n)\1+,替换为填\1,勾选“正则表达式”和“匹配新行” - 再删掉刚才加的行号列:用列编辑模式框选第一列数字,按
Delete
如果装了 PythonScript 插件,可以用脚本一键去重(保留首次出现顺序)
这是最接近“理想操作”的方式——不改变原始顺序,且真正按整行比对。前提是已安装 PythonScript 插件并重启 Notepad++。
- 菜单栏:
Plugins → Python Script → New script,保存为remove_duplicates.py - 粘贴以下代码:
lines = notepad.getLines(0, notepad.getLength())
seen = set()
unique_lines = []
for line in lines.split('\r\n'):
if line not in seen:
seen.add(line)
unique_lines.append(line)
notepad.replaceWholeDocument('\r\n'.join(unique_lines))
- 运行:
Plugins → Python Script → Scripts → remove_duplicates - 注意:
getLines()在大文件(>10MB)下可能卡顿,且该脚本不处理末尾空行和 BOM 差异
常见翻车点:正则去重时 \r\n 和 \n 混用导致匹配失败
Windows 文件默认换行是 \r\n,但粘贴进 Notepad++ 的内容可能混着 \n(尤其从网页或 Linux 环境来)。如果正则里写死 \r\n,就可能漏掉只含 \n 的行。
- 安全做法:在替换前统一换行符:
编辑 → 文档格式转换 → 转换为 Windows 格式(CR LF) - 正则中的换行应写作
\r?\n,而不是硬写\r\n - 测试时先用
查找 → 查找全部在当前文档中看是否真能标出所有重复块,别直接点全部替换
真正难的是判断“什么是重复”——是忽略首尾空格?是否区分大小写?这些都没法靠一个按钮解决,得先想清楚规则再选方法。


















