Sublime Text可通过正则替换或Filter Lines插件实现保留首次出现顺序的去重:正则方案用^(.*$)\n(?=.*^\1$)匹配后续重复行,插件方案执行Filter Lines: Unique命令,后者更高效稳定。

Sublime Text 自带命令就能去重,但默认不保留原始顺序
Sublime Text 本身没有“删除重复行并保持首次出现顺序”的一键功能,但通过内置命令组合可以高效完成。关键在于区分两种需求:Sort Lines 会排序后去重(改变原有顺序),而真正需要的是“按出现顺序去重”。
用 Sort Lines + Remove Duplicate Lines 组合(适合可接受排序的场景)
这是最常被误用也最容易上手的方式,适合日志、配置项等本身无序的文本。
- 全选内容(
Ctrl+A或Cmd+A) - 执行
Sort Lines(菜单:Edit → Sort Lines,或快捷键Ctrl+Shift+P输入sort回车) - 再执行
Remove Duplicate Lines(同上,命令面板搜remove duplicate)
⚠️ 注意:Sort Lines 会把 zoo 排到 apple 前面,原始顺序彻底丢失;若代码中某函数多次声明、只想留第一个,这个流程就不适用。
用正则替换实现“保留首次出现”的去重(推荐用于代码清理)
这是真正符合“删除重复行但不打乱逻辑顺序”需求的做法,依赖 Sublime 的多行正则能力。
- 打开替换面板(
Ctrl+H/Cmd+H) - 开启
. matches newline(点击右下角.*按钮)和Regular Expression(Alt+R) - 查找框填:
^(.*$)\n(?=.*^\1$)
- 替换框留空,点
Replace All
说明:^(.*$) 匹配整行,\n(?=.*^$) 向下预查是否后面还存在完全相同的行;只删掉“后面还有重复”的那些行,首行保留。对含空格、缩进、注释的代码行也有效。
安装 Advanced CSV 或 Text Pastry 插件反而不解决这个问题
很多人搜“sublime 去重插件”,结果装了 CSV 工具或批量编辑插件,其实它们都不提供按行去重逻辑。真正值得装的是 Filter Lines 插件(Package Control 搜即可),它增加了 Filter Lines: Unique 命令——行为等价于 Linux 的 awk '!seen[$0]++',保留首次出现顺序,且支持作用于选区。
安装后,选中目标区域,调出命令面板(Ctrl+Shift+P),输入 filter unique 回车即可。比手写正则更快,也更不易出错。
真正容易被忽略的是:正则方案在超大文件(>10MB)中可能卡顿,而 Filter Lines 插件底层是 Python 实现,内存占用更可控;如果处理的是千行级的 JS/Python 源码,直接用插件最稳。










