You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何让diff在终端实现行内文本变化高亮(类似vimdiff/meld)

实现行内文本差异的终端高亮输出

默认diff工具确实是整行标记变化,但完全可以实现行内文本的差异高亮,下面是几种简单可行的方案:

1. 原生diff工具直接实现

原生diff自带行内对比能力,结合颜色参数就能输出终端可识别的ANSI颜色标记:

# 行内差异用颜色直接标记(删除红、新增绿)
diff --color=always --word-diff=color file1.txt file2.txt

# 用符号包裹差异内容+颜色标记,更清晰
diff --color=always --word-diff=plain file1.txt file2.txt

--word-diff=color会把行内变动的文本直接用背景色区分,--word-diff=plain则会用[-删除内容-]和{+新增内容+}包裹差异部分,同时保留颜色高亮。

2. 用专业工具获得类vimdiff/meld的体验

如果原生diff的效果不够直观,推荐两个专门优化终端差异显示的工具:

  • icdiff:主打行内差异高亮,默认左右分栏展示两个文件,行内不同的文本会用鲜明颜色标记,安装后直接运行:
    icdiff file1.txt file2.txt
    
  • delta:现代diff增强工具,支持语法高亮、细腻的行内差异标记、侧边变更提示,体验接近图形化工具,运行命令:
    delta file1.txt file2.txt
    
    它还支持自定义颜色主题,能根据你的终端风格调整高亮效果。

3. 关于ANSI颜色码输出

上面的工具默认都会输出带ANSI颜色码的内容,直接在终端就能看到彩色效果。如果需要保存带颜色的输出到文件,记得加上强制颜色的参数(比如diff的--color=always、delta的--color=always),这样文件会保留颜色码,后续用支持ANSI的终端查看器打开即可正常显示。

内容的提问来源于stack exchange,提问作者Cyb10101

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.02 10:33:22