sublime怎么快速删除重复的文本行_sublime内置SortLines功能用法【方法】

9次阅读

sublime Text 的 Remove Duplicate Lines 命令仅删除相邻重复行,必须先执行 sort Lines 排序才能有效去重;若需保持原序,应使用正则 ^(.*)(n1)+$ 替换,或借助插件实现全局保序去重。

sublime怎么快速删除重复的文本行_sublime内置SortLines功能用法【方法】

sublime text 自带的 Sort Lines 命令本身**不会自动删除重复行**,它只排序——这是最常被误解的一点。要真正去重,必须配合“排序 + 去重”两步,或用正则手动处理。

怎么用 Sort Lines 实现去重(必须先排序)

Sublime 的 Sort Lines 是去重的前提,因为 Remove Duplicate Lines(内置命令)**只删除相邻重复行**。如果重复行不挨着,直接运行会无效。

  • 选中你要处理的文本区域(或全选 Ctrl+A
  • 执行 Sort LinesCtrl+Shift+P → 输入 Sort Lines → 回车
  • 再执行 Remove Duplicate LinesCtrl+Shift+P → 输入 Remove Duplicate Lines → 回车

这两步缺一不可。跳过排序,Remove Duplicate Lines 会漏掉大部分重复项。

为什么 Remove Duplicate Lines 不是“智能去重”

这个命令底层逻辑非常简单:逐行比对,仅当当前行与上一行**完全相同且紧邻**时才删掉当前行。它不建哈希表、不缓存、不回溯。

  • 输入:
    apple banana apple cherry

    → 执行后仍是原样(因为两个 apple 不相邻)

  • 输入:
    apple apple banana cherry

    → 执行后变成

    apple banana cherry
  • 空行、首尾空格、大小写都会影响判断(Appleapple

不想排序?用正则快速去重(更灵活但需注意边界)

如果不能改变原始顺序(比如日志按时间排列),就别用 Sort Lines,改用正则替换:

  • Ctrl+H 打开替换面板,勾选 . (Regex)
  • 查找框填:
    ^(.*)(n1)+$
  • 替换框留空
  • 点击 Replace All

说明:1 指向第一组捕获内容,(n1)+ 匹配后续所有完全相同的紧邻行。这个表达式只处理**连续重复块**,不跨段落;若想全局去重保序,得用插件(如 Text PastryAdvanced csv 配合列操作)。

容易忽略的细节:大小写、空格、bom编码

哪怕看起来一样的两行,也可能因以下原因无法被识别为重复:

  • 一行末尾有空格或制表符(apple apple
  • 混合了 rnn 换行符(尤其从 windows / macOS 复制过来的文本)
  • 文件含 UTF-8 BOM( 开头),导致首行实际不匹配
  • 中文标点混用(全角/半角逗号、顿号)

建议处理前统一清理:用正则 s+$ 删除行尾空白,再确认换行符一致(File → Line Endings 设为统一类型)。

text=ZqhQzanResources