编辑差异行内高亮
- 日期:2026-07-30
- 提交:
feat(tui): edit diff 行内高亮并迁移 diffy 到 similar - 版本:
0.12.1-alpha.2
此前工具编辑文件时,diff 只按整行区分新增/删除/上下文,无法看出"这一行里到底改了哪几个字"。本次更新为 diff 引入了行内高亮:修改(Replace)行内实际发生变化的片段会用更醒目的强调样式标出,同时把 diff 库从 diffy 迁移到 similar,使行内差异识别具备更好的 Unicode 感知。
主要变化
-
Replace 行内变化片段高亮
当一行内既有被删除又有新增的内容时,发生变化的片段会以"段级强调"渲染——在整行 tint 基础上叠加更饱和的背景并加粗,一眼就能看出这行具体改了什么。纯上下文(Context)行以及整块新增/删除(Insert/Delete)行不做行内强调,仍沿用原有的整行样式。 -
diff 库迁移到
similar(inline + unicode)
文本差异算法从diffy迁到similar,并启用inline与unicode特性。行内变更片段按 Unicode 字符切分,对中文等多字节文本的改动识别更准确。 -
diff 颜色收口到主题调色板
行内强调色与整行 tint 统一收到theme/palette管理,随暗色/亮色背景自适应。当终端使用默认配色(未显式设置背景色)时自动降级:整行 tint 退化为无背景,强调片段退化为REVERSED反显,保证可辨识。
相关说明
- 行内细化与行级 diff 共享同一次 200ms 协作式计算预算;超大块或超长行超出预算时回退为整行样式,避免渲染开销失控。
- 同一份 diff 内容只需计算一次,header 的
+N/−N计数、展开详情与紧凑展示共享同一份结果。
效果示例(删除指定行中的 temporary 单词):

其中 temporary 单词会以强调色标出。
后续可能会实现更易读的左右 diff 视图,而不止于当前的内联 diff 视图!