sublime text 自带功能不能直接去重;需用正则匹配重复行后剪切,或安装 text pastry 插件执行 remove duplicates 命令实现可靠去重。

Sublime Text 自带功能能去重吗?
不能直接去重,但自带的 Sort Lines 功能配合手动操作可以间接实现——前提是重复行必须相邻。真实文本里重复行往往散落各处,这时候靠排序再删相邻项不仅费时,还容易漏删或误删。
用正则 + Find All 快速标记所有重复行
核心思路是:先找出“后面还出现过”的某一行,把它选中,再一次性删除。关键在正则写法和操作顺序:
- 打开
Find → Find...(Ctrl+F),勾选Regular Expression和Whole Line - 输入正则:
^(.*$)\n(?=.*^\1$)—— 它匹配“后面还有完全相同行”的当前行(含换行符) - 点
Find All,所有可被删除的重复行(保留第一个)会被高亮选中 - 按
Ctrl+X剪切,就完成了去重
注意:\1 是反向引用,^ 和 $ 确保整行匹配;如果文本含空行或首尾空格不一致,这个正则会失效。
装 Package Control 后用 Text Pastry 插件更稳
原生命令和正则对多行重复、跨段落、大小写混杂等情况支持弱。Text Pastry 插件提供 Remove Duplicates 命令,逻辑更可靠:
- 先装好
Package Control(没装的话搜 “Install Package Control sublime” 三分钟搞定) - 按
Ctrl+Shift+P→ 输入Install Package→ 搜Text Pastry并安装 - 全选文本(
Ctrl+A),再按Ctrl+Shift+P→ 输入Remove Duplicates回车
它默认保留首次出现的行,不依赖行序,也不吃空格/换行差异,比手写正则容错高得多。
为什么不用 Sort Lines + Unique?
因为 Sublime 的 Sort Lines 本身没有 Unique 选项。有人误以为排序后手动删相邻重复就行,但实际有三个坑:
- 排序会打乱原始顺序,如果你依赖上下文位置(比如日志时间戳、配置项顺序),就不能用
-
Sort Lines对中文、数字、特殊字符排序规则不直观,可能把item10排在item2前面 - 没批量去重能力,只能靠眼睛扫,500 行文本里漏掉一两处重复几乎必然发生
真正省心的做法,是接受“去重 = 先标记再删”这个动作闭环,而不是幻想一键排序完事。










