sublime text去重必须先排序再删重,因remove duplicate lines仅删除相邻重复行;不支持按列、忽略空格或保留原序去重,大文件易卡顿,推荐先用系统命令sort -u或python一行脚本处理。

Sublime Text 自带功能就能去重,但必须先排序
Sublime Text 没有“一键删除重复行”的独立命令,Sort Lines 是唯一可靠入口,但它默认只排序,不删重——所以真正起作用的是排序后配合 Remove Duplicate Lines。这个操作链必须严格按顺序来,跳过排序直接删重会漏掉大部分重复项。
- 重复行只有相邻时才会被识别,
Remove Duplicate Lines本质是“删掉和上一行完全相同的行” - 所以务必先执行
Sort Lines(菜单:Edit → Sort Lines,或快捷键Ctrl+Shift+P输入 “sort” 选中) - 再执行
Remove Duplicate Lines(同路径下搜索该命令,或用快捷键Ctrl+Shift+P输入 “remove duplicate”) - 注意:这个操作不支持正则匹配或部分行去重,只认整行完全一致
别信插件宣传的“智能去重”,多数只是包装了同一逻辑
像 Advanced CSV 或 Text Pastry 这类插件,常被推荐用于数据清洗,但它们对“重复行”的处理底层仍依赖排序 + 相邻比对。真正需要按某列去重、保留首条/末条、或忽略前后空格时,Sublime 本身做不到。
- 例如:两行内容是
"apple,123"和"apple, 123"(空格差异),默认去重不会识别为重复 - 又如:想按 CSV 第二列去重,而不是整行,Sublime 原生无此能力
- 插件如
MultiEditUtils提供Remove Consecutive Duplicates,名字带“consecutive”,说明它依然要求先排序
大文件慎用,内存和响应延迟会突然变高
Sublime 对几千行以内的文本处理很流畅,但一旦超过 5 万行,Sort Lines 可能卡顿数秒,且排序过程不可中断。更麻烦的是:如果原始数据含大量长字符串(比如 JSON 行、日志时间戳),排序耗时呈非线性增长。
- 实测:10 万行平均长度 200 字符的纯文本,排序约耗时 3–6 秒(i7-10875H)
- 若文件编码不是 UTF-8(比如 GBK),
Sort Lines可能乱序甚至报错UnicodeDecodeError - 建议先用外部工具预处理:Linux/macOS 用
sort -u file.txt,Windows 用 PowerShellGet-Content file.txt | Sort-Object -Unique
想保留原始顺序?只能靠正则 + 手动标记
原生功能无法在不去序的前提下删重,但可以用正则临时“标记”重复行,再手动删。核心思路是:用 Find All 匹配所有重复出现的行,然后逐个确认是否删除。
- 打开查找面板(
Ctrl+F),勾选Regular Expression和Whole Word - 输入正则:
^(.*)(\n\1)+$(匹配连续重复的多行)或更稳妥的^([^\n]+)\n(?=.*\n\1$)(需启用. matches newline) - 但注意:这种正则在大文件里效率极低,且容易误匹配(比如某行内容恰好是另一行的子串)
- 真实场景中,不如复制到 VS Code 或用 Python 脚本:
list(dict.fromkeys(lines))一行解决










