Notepad++ 7.9+ 已移除TextFX插件,原“一键去重”功能失效;推荐使用Python Script插件编写去重逻辑,或用原生排序+正则组合(需注意换行符、.匹配设置及替换内容),保序需先加序号锚点再排序删除。

Notepad++ 7.9+ 已移除 TextFX,别再找“一键去重”插件
Notepad++ 从 7.9 版本起彻底下架 TextFX 插件,所有依赖它的“Sort lines case insensitive”或“Delete duplicate lines”功能均已失效。现在点菜单里残留的 TextFX 项会直接报错或无响应——这不是你安装问题,是官方移除行为。任何教程还让你搜 TextFX Characters 安装,基本都过时了(最后更新在 2024 年)。真要装第三方插件,必须确认它签名可信、适配当前 Notepad++ 版本(2026 年主流是 v8.6+),否则可能触发安全拦截或崩溃。
Python Script 插件是目前唯一可靠可编程去重方案
它不是“点一下就完事”的黑盒工具,而是让你写逻辑的运行环境。去重脚本本质就是维护一个 seen 集合,逐行读取、判断、跳过重复——天然支持保序、忽略首尾空格、大小写控制等需求。
- 安装路径:
Plugins → Plugin Manager → Show Plugin Manager → Available中搜索Python Script,勾选安装并重启 - 新建脚本:
Plugins → Python Script → New Script,粘贴类似以下逻辑:
lines = notepad.getLines(0, notepad.getLength())
seen = set()
unique_lines = []
for line in lines.split('\r\n'):
stripped = line.strip() # 忽略首尾空格
if stripped and stripped not in seen:
seen.add(stripped)
unique_lines.append(line)
notepad.replaceSel('\r\n'.join(unique_lines))注意:line.strip() 可换成 line.lower().strip() 实现忽略大小写;notepad.getLines() 在大文件中可能内存吃紧,此时应改用逐行迭代而非全载入。
原生排序 + 正则仍是中小文本最稳组合技
不装插件、不联网、不担心兼容性,适合处理几万行以内、对顺序无强要求的文本。但三个细节错一个就白忙活:
-
Sort Lines Lexicographically Ascending必须在正则前执行,否则\1永远匹配不到 - 查找目标填
^(.*\r?\n)\1+(Windows)或^(.*\n)\1+(Linux/macOS),不能混用换行符 -
. matches newline必须未勾选,否则^和$跨行生效,\1会捕获到意外内容 - 替换目标必须是
\1,不是留空——留空会把整组删掉,少一行
如果行内含制表符或混合空格,.* 容易贪婪过头,更稳写法是 ^([^\r\n]*\r?\n)\1+。
想保留原始顺序?加序号锚点是唯一可控手段
Notepad++ 排序天生不稳定,没有 stable_sort 选项。所谓“保序去重”,只能靠人工锚定:
- 先用
Search → Column Mode Edit → Insert Number,起始 1、增量 1,在每行最左插入序号 - 全选后执行
Sort Lines Lexicographically Ascending(此时按内容排序,序号被动跟随) - 正则
^(.*\r?\n)\1+→\1删除相邻重复 - 最后用列编辑(
Alt + 鼠标拖选)框住左侧序号列,按Delete清除
漏掉加序号这步,原始顺序就永远不可逆;漏掉删序号,结果里会残留一串数字——这两个动作不是可选步骤,是硬性闭环。


















