sublime的remove duplicate lines仅删除相邻重复行,非全局去重;需先排序再执行,或升级至4.4+用sort lines: unique命令,亦可安装find duplicate lines插件实现智能去重。

Sublime 的 Remove Duplicate Lines 为什么删不干净?
因为 Remove Duplicate Lines 命令只删除**相邻重复行**,不是全局去重。比如三行内容是 apple、banana、apple,它完全不会动——中间夹了别的行,就“看不见”重复。
- 这是最常被忽略的前提:不排序,就别指望它能清掉所有重复项
- 它的底层逻辑就是逐行比对上一行,没做哈希或集合缓存
- 菜单路径是 Edit → Line → Remove Duplicate Lines,但点之前必须先排序
排序 + 去重两步法(零插件,最稳)
适用于临时处理、不想装插件、或需保留原始大小写/空格细节的场景。关键在正则写法要兼容换行符差异。
- 全选文本:
Ctrl + A - 排序:
Ctrl + Shift + P→ 输入Sort Lines→ 回车 - 打开替换面板:
Ctrl + H,勾选.*(启用正则) - 查找框填:
^(.*)(\r?\n)\1(\r?\n)?;替换框留空 - 点 Replace All,直到提示 “0 occurrences found”
说明:\r?\n 同时匹配 Windows(\r\n)、Mac(\r)、Linux(\n)换行; 精确复用第一行全文,不因尾部空格或不可见字符误判。
Sublime 4.4+ 用户直接用 Sort Lines: Unique
如果你用的是 Sublime Text 4.4 或更新版本,不用正则、不用插件,一条命令就能完成“排序 + 去重”:
-
Ctrl + Shift + P→ 输入Sort Lines: Unique→ 回车 - 该命令默认保留每组重复行中的第一行,其余全删,且自动按字典序排列
- 若想绑定快捷键(比如
Ctrl + Alt + U),编辑Preferences → Key Bindings,加这一行:[ { "keys": ["ctrl+alt+u"], "command": "sort_lines", "args": {"unique": true} } ]
高频处理推荐插件:Find Duplicate Lines
适合每周都要清洗日志、SQL 结果、爬虫输出等几百行以上数据的人。它支持“保留唯一值”而非“删除所有重复行”,也支持忽略空行、忽略大小写等选项。
- 安装:
Ctrl + Shift + P→Package Control: Install Package→ 搜Find Duplicate Lines - 使用:
Ctrl + A全选 →Ctrl + Shift + P→ 输入Remove All Duplicates(注意不是 “Consecutive”) - 插件会高亮所有重复行,并弹出确认框,可预览再执行,误操作风险更低
真正容易被忽略的点是:所有方法都对不可见字符敏感——比如某行末尾多一个空格、Tab 或零宽空格(U+200B),就会被当作不同行。处理前建议先用 Ctrl + H 查找 \s+$ 替换为空,清理尾部空白。










