permute lines 插件不具备去重功能,其unique命令仅在排序或打乱后保留首行相同内容;真去重需用sort lines配合正则^(.*$)\n\1$替换,或终端sort -u命令,注意编码与换行符。

Permute Lines 插件根本不能去重,它只负责排序和打乱
很多人装了 Permute Lines 就以为能一键去重,结果选中几行按 Ctrl+Shift+P → Permute Lines: Unique,发现没反应,或者重复行还在——不是你操作错,是插件压根没这个功能。Permute Lines: Unique 实际上只是「在排序/打乱后保留首行相同的内容」,它不扫描全文、不比对相邻行、也不删重复项。真去重得靠别的路子。
用 Sort Lines + 正则替换是最稳的去重方案
Sublime 原生支持稳定排序,再配合一次正则替换,就能干净剔除重复行(保留首次出现的)。关键在于顺序不能错,且正则要写对:
- 先全选目标文本,按
Ctrl+Shift+P→ 输入Sort Lines回车(确保勾选了Case sensitive,否则A和a会被当成不同行) - 再按
Ctrl+H打开替换面板,勾选Regular Expression(.*按钮) - 查找框填:
^(.*$)\n\1$(注意:这是匹配「连续两行完全相同」) - 替换框留空,点
Replace All - 如果重复行不连续(比如中间夹了其他内容),得先用
Sort Lines把它们挤到一起,否则这正则无效
命令行调用 sort -u 更快,但要注意换行符和编码
如果你习惯终端、或处理的是大文件(几千行以上),直接扔给系统 sort 更可靠,Sublime 支持外部命令注入:
- 选中文本 →
Ctrl+Shift+P→Filter Through Command... - Linux/macOS 输入:
sort -u;Windows(WSL)同理;纯 Windows 命令提示符不带-u,得用sort | uniq(需 Git Bash 或 WSL) - 注意:Sublime 默认用 UTF-8,但某些文件带 BOM 或 CRLF 换行,
sort可能报Illegal byte sequence—— 先用File → Reopen with Encoding → UTF-8强制转码 - 该方式会丢失原顺序(变成字典序),如需保持首次出现顺序,就不能用这个
别信“一键去重”插件,尤其叫 Remove Duplicate Lines 的老版本
Sublime Package Control 里搜 “duplicate” 能翻出一堆插件,但多数更新停滞、不兼容 Sublime 4、或逻辑有 bug(比如把 abc 和 abc123 当成重复):
- 目前最靠谱的是
AdvancedRename附带的去重功能,但它藏得深:选中 → 右键 →Advanced Rename → Remove Duplicates - 所有第三方插件都绕不开「是否区分大小写」「是否忽略前后空格」「是否整行匹配」这几个开关——而 Sublime 原生命令和正则能让你完全控制这些条件
- 最常被忽略的一点:空行也算一行。如果你的文本里有空白行,
^(.*$)\n\1$不会匹配它,得额外跑一次^\s*$\n替换为空来清理










