sublime text 删除重复行(保留原始顺序)应使用内置命令“remove duplicate lines”,该命令通过ctrl+shift+p调出并执行,仅删除完全相同的整行,不改变原有顺序。

Sublime Text 怎么删重复行(不排序)
直接用 Sort Lines 会连带排序,不是真去重——它只删相邻重复行,且必须先手动排序才有效。要保留原始顺序只删重复项,得换思路。
- 选中全部文本(
Ctrl+A或Cmd+A),再按Ctrl+Shift+P(Mac 是Cmd+Shift+P)调出命令面板 - 输入
Remove Duplicate Lines,回车执行(这个命令来自默认自带的Text插件,无需额外安装) - 注意:该命令只删除「完全相同的整行」,前后空格、换行符差异都会导致判为不同行
为什么 Sort Lines + Remove Duplicate Lines 容易出错
很多人以为先排序再删重是标准流程,但实际场景中常踩两个坑:
-
Sort Lines会改变原始数据顺序,比如日志时间线、代码执行顺序、CSV 表头位置,一排就乱 - 如果文件含 BOM 或混合换行符(
\r\n和\n并存),Remove Duplicate Lines可能漏掉看似重复的行 - 该组合对「首尾空格不同但内容相同」的行完全无感,比如
"abc"和"abc "被视为两行
想精确控制去重逻辑?用正则临时处理
当需要按某列去重、忽略大小写、或只比对部分字段时,内置命令不够用,得上正则 + Find All + Replace。
- 打开查找面板(
Ctrl+H),勾选Regular Expression和Wrap Around - 例如:按第一列(以逗号分隔)去重,可搜
^([^,\n]+),.*\n(?=.*^\1,),替换为空 —— 但注意这会删掉后面所有匹配行,慎用 - 更安全的做法是加个标记:先用
Find All找出重复行首,用Ctrl+Shift+L进入多光标,再手动删 - 正则方案性能差,文件超 10MB 就卡,别硬刚
插件替代方案:哪些值得装
默认功能有限,但不用装一堆插件。真正实用的就两个:
-
Advanced CSV:适合处理带引号、换行、逗号嵌套的 CSV,支持按列去重,不会误伤字段内内容 -
Text Pastry:不是去重专用,但配合列编辑(Alt+鼠标拖选)可快速标记/删重复块,适合结构化文本 - 别装
Remove Duplicates类名字直白的插件——多数只是包装了默认Remove Duplicate Lines,没新增逻辑
去重这事,核心不在工具多寡,而在明确「什么是重复」:是整行?某几列?是否忽略空格或大小写?没想清这点,换十个插件也白搭。










