VSCode原生无去重功能,Text Transformer插件最省事:右键→Transform Selection→Remove duplicate lines,默认保留首次出现行;手动需先排序再正则^(.*$)\n\1$;大文件推荐终端sort -u。

用 Text Transformer 插件一键去重最省事
VSCode 自身不提供原生去重功能,但 Text Transformer 是目前最轻量、响应最快、支持多种去重模式的插件。它不依赖外部命令或正则硬编码,适合日常编辑时快速清理日志、配置列表、爬虫结果等含大量重复行的文本。
安装后右键选中目标文本 → “Transform Selection” → “Remove duplicate lines” 即可。默认保留首次出现的行,忽略后续重复项。
- 支持区分大小写:勾选插件设置中的
textTransformer.caseSensitive - 若需保留最后一次出现的重复行,得先反向排序(
Sort lines (reversed)),再去重,再反向恢复 - 对超长文件(>10 万行)响应略慢,此时建议切到终端用
sort -u
用内置命令 + 正则手动去重(无插件场景)
当无法安装插件(如公司锁死扩展市场)时,可用 VSCode 的「查找替换」配合正则完成基础去重,但仅适用于**相邻重复行**——这是最大限制。
打开替换面板(Ctrl+H),启用正则模式(.* 图标),输入:
^(.*)(\r?\n\1)+$
替换为:。这会把连续重复的多行压缩成一行。
- 不能处理间隔重复(如 A-B-A),也不识别空行或前后空白差异
-
\1捕获组必须完整匹配整行,所以行尾空格、BOM、制表符不一致都会导致失败 - 想全局去重而非仅相邻?必须先
Sort lines(右键菜单),再跑这个正则
调用系统命令 sort -u 处理大文件或严格去重
VSCode 内置终端可直接调用系统 sort 命令,这是最可靠、跨平台(WSL/macOS/Linux)、支持全量去重的方式。Windows 用户需确保已启用 WSL 或安装 Git Bash。
操作步骤:
- 选中要处理的文本(或全选
Ctrl+A) - 在集成终端中粘贴并执行:
sort -u(macOS/Linux/WSL)或sort.exe /unique(Windows CMD,功能较弱) - 输出结果会直接打印在终端里,复制回编辑器即可
注意:sort -u 会改变原始顺序(按字典序重排),如需保持首次出现顺序,得用 awk '!seen[$0]++' 替代。
为什么不用 uniq?它和 sort -u 的关键区别
uniq 只能去重**相邻重复行**,且必须前置 sort 才能实现全局去重——即 sort file.txt | uniq。单独用 uniq 对乱序文本完全无效,而新手常误以为它等价于“去重命令”。
-
sort -u是原子操作,一步到位;uniq是过滤器,依赖上游已排序 - VSCode 终端里输错成
uniq而没加sort管道,结果看起来“没变化”,其实是预期行为 - Windows 原生命令
sort.exe不支持-u,但 WSL 中的 GNUsort支持
真正容易被忽略的是行尾换行符一致性:混合 \r\n 和 \n 会导致同一行被当成两条不同内容。处理前建议先统一换行符(右下角点击 CRLF → 切为 LF)。


















