sublime text 无内置去重功能,仅能通过正则处理相邻重复行,全文去重需依赖插件如 sort lines 或 remove duplicate lines,并须预先清理空格、换行符等干扰项。

Sublime 本身没有去重命令,join_lines 不处理重复
别指望 Ctrl+J 或 Cmd+J 能删重复行——它只管拼接,不识别内容是否相同。你选中 5 行“apple”,按完还是 5 个 apple 并排,中间塞满空格。Sublime 内置功能里压根没提供“去重”逻辑,所有声称“一键去重”的快捷键,要么是插件,要么是误传。
用正则替换实现简单去重(相邻重复行)
如果重复行是挨着的(比如日志里连续多条相同错误),可以用 Sublime 自带正则搞定:
- 打开替换面板:
Ctrl+H(Windows/Linux)或Cmd+H(macOS) - 启用正则模式(点
.*按钮) - 在
Find What填:^(.*)(\n\1)+$ - 在
Replace With填:$1 - 勾选
Regular expression和Match case(如需大小写敏感) - 点
Replace All
这个正则只匹配「连续出现的完全相同的行」,比如:
error: timeout error: timeout error: timeout ok
会变成:
error: timeout ok
但不会处理分散的重复(如第1行和第10行都是 apple),它不扫描全文,只看相邻块。
真正去重必须靠插件:SortLines + Remove Duplicate Lines
要删掉文件里所有重复行(不管位置),得装插件。推荐组合使用两个成熟插件:
-
Package Control安装SortLines(自带去重选项)和Remove Duplicate Lines(专一去重) - 全选文本:
Ctrl+A/Cmd+A - 调出命令面板:
Ctrl+Shift+P/Cmd+Shift+P - 输入并执行:
Sort Lines: Unique(这是SortLines提供的去重排序) - 或执行:
Remove Duplicate Lines(不排序,只删后续重复项,保留首次出现的)
注意:Sort Lines: Unique 会同时排序+去重;Remove Duplicate Lines 保持原顺序,仅删除第二次及以后出现的相同行。选哪个取决于你是否在意顺序。
去重前必须清理的干扰项
实际文本里,“看起来一样”的行往往因隐藏字符而不同,导致去重失败:
- 行尾空格/Tab:
Ctrl+Shift+P→ 输入Trim Trailing White Space先清一遍 - 混合换行符(
\r\n和\n并存):File → Line Endings → Unix (LF)统一为\n - 全角/半角空格、不可见 Unicode 字符(如零宽空格):用正则
[[:space:]]+$替换为空,或手动开列模式(View → Characters → Show All Characters)检查 - 大小写差异:若需忽略大小写去重,
Remove Duplicate Lines插件支持勾选Case insensitive,Sort Lines: Unique默认区分大小写
最常被忽略的是:你以为两行都是 apple,其实一行末尾有空格,另一行是 \r\n 结尾——它们在 Sublime 看来就是不同字符串,插件也认不出来。去重不是点一下就完事,而是先让“相同”真的相同。











