atom原生无去重功能,推荐用正则^(.*)(\n\1)+$替换为$1临时去重,或安装line-deduplicator插件实现一键去重,避免误操作和无效快捷键。

Atom 默认不提供去重命令,别指望 Ctrl+Shift+D 或 sort-lines 能直接删重复行
Atom 原生没有「删除重复行」或「保留唯一行」的命令。sort-lines 插件只排序,不 dedupe;editor:duplicate-lines 是复制,不是去重;Ctrl+Shift+D 甚至和去重完全无关。想靠快捷键一键去重,会白按几十次。
用查找替换 + 正则临时去重,最稳且无需插件
这是 Atom 开箱即用就能做的方案,适合一次性清理配置、日志、导入列表等纯文本场景。关键在于正则写法必须匹配“整行重复”,否则会误伤。
- 先全选目标区域:
Ctrl+A(Windows/Linux)或Cmd+A(macOS) - 打开查找面板:
Ctrl+F(Win/Linux)或Cmd+F(macOS),勾选Regex开关 - 输入正则:
^(.*)(\n\1)+$—— 匹配连续重复的完整行(含换行符) - 替换为:
$1,然后点Replace All - 重复点击
Replace All直到提示 “No results found”,才算彻底去重
注意:sort-lines 插件必须提前启用并重启 Atom,否则正则去重前无法保证重复行相邻——而上述正则只处理连续重复,不处理散落重复。
装插件 line-deduplicator 是唯一真·一键去重方案
社区里维护较活跃、行为明确的去重插件只有 line-deduplicator(非 duplicate-line-or-selection 那种伪去重)。它提供两个核心命令:
-
line-deduplicator:deduplicate:删除所有后续重复行,仅保留首次出现的那行 -
line-deduplicator:deduplicate-keep-last:反过来,只留最后一次出现的
绑定快捷键建议写进 ~/.atom/keymap.cson:
'atom-text-editor:not([mini])': 'ctrl-alt-d': 'line-deduplicator:deduplicate'
装完插件后务必重启 Atom,否则命令不会出现在 Cmd+Shift+P 面板里。别用已停更的类似插件,比如老版本的 remove-duplicates,它们在 Atom 1.60+ 上常报 Cannot read property 'getBuffer' of undefined 错误。
多光标 + 手动删重复行?效率低还容易漏
有人试图用 Ctrl+D(选中相同文本)→ Ctrl+Shift+K(删行)来模拟去重,这在语义上是错的:
-
Ctrl+D匹配的是字符串,不是整行;user_id出现在多行不同位置,会被误判为“重复” -
Ctrl+Shift+K在多光标下只删光标所在行,不判断是否真重复 - 没选中时按
Ctrl+Shift+K会删整行,但你根本不知道删的是不是重复项
真正需要去重时,要么用正则预处理,要么装 line-deduplicator。其他路径都是拿脚投票。
去重操作不可逆,尤其对代码 import 列表或 JSON 数组,执行前最好先 Ctrl+Z 确认撤销链有效,或者手动备份当前 buffer 内容。











