Sublime Text中Sort Lines仅排序不去重,需先排序再运行Sort Lines: Unique(或自定义ctrl+alt+u快捷键)才能真正去重;大文件建议用shell命令处理,并注意不可见字符影响去重效果。

用 Sort Lines 命令去重(但要注意它只排序不真正去重)
Sublime Text 自带的 Sort Lines 命令(Ctrl+Shift+P → 输入 Sort Lines)会按字典序重排所有选中行,但它**不会删除重复行**,只是把重复行挤在一起。这是最容易误解的点——很多人以为“排序完手动删”是标准流程,其实有更直接的方式。
真正去重需要组合操作:先排序,再运行 Sort Lines: Unique(Sublime 4.4+ 内置,旧版需安装插件)。这个命令会保留每组重复行中的第一行,其余全删。
- 没装 Package Control?先装,否则找不到高级命令
- 如果命令面板搜不到
Sort Lines: Unique,说明你用的是 Sublime Text 3 且未安装AdvancedSorting插件 - 注意:该命令作用于当前选区;全选后再运行,才对整个文件生效
快捷键方案:自定义 ctrl+alt+u 绑定去重命令
默认没有一键去重快捷键,但可以自己加。打开 Preferences → Key Bindings,在右侧用户键绑定里添加:
[
{
"keys": ["ctrl+alt+u"],
"command": "sort_lines",
"args": {"unique": true}
}
]
保存后,全选文本(Ctrl+A),再按 Ctrl+Alt+U 就能一步完成排序+去重。
-
macOS 用户把
ctrl换成super(即Cmd+Alt+U) - 别写错
"unique": true—— 写成true不带引号或拼错字段名都会让快捷键失效 - 这个绑定只影响当前文件类型;如只想在纯文本中生效,可加
"context"限定
处理大文件时为什么卡住?别用 GUI 命令
当文件超过 10 万行,Sort Lines: Unique 会明显变慢甚至无响应——它本质是内存内排序+遍历比对,没做流式处理。
此时建议切到终端,用系统命令更快更稳:
sort file.txt | uniq > deduped.txt
或者保留原始顺序(只删后续重复项):
awk '!seen[$0]++' file.txt > deduped.txt
- Sublime 的 GUI 命令无法跳过首行、忽略空行或按列去重;这些都得靠 shell 工具
- 如果必须在 Sublime 里编辑大文件,先用命令行预处理,再打开结果文件
- 不要尝试用正则
^([^\r\n]+)\r?\n\1\r?\n替换去重——逻辑不可靠,还容易误删
为什么有些“重复行”没被删掉?检查不可见字符
看似相同的两行,可能一个结尾是 \n,另一个是 \r\n;或某行末尾多了空格、全角空格、零宽字符。这时 Sort Lines: Unique 会认为它们不同。
排查方法:
- 开启显示不可见字符:
View → Show Whitespaces(或快捷键Ctrl+Shift+P→Toggle Whitespaces) - 用正则替换统一行尾:
\r?\n→\n,再全选运行去重 - 批量删行尾空格:
Ctrl+H→ 查找[ \t]+$,替换留空,勾选Regular Expression
真正难搞的不是功能有没有,而是你以为删干净了,其实还有隐藏差异。每次去重前扫一眼空白符,省半小时返工。










