文本差分工具 — 行級對比, 顏色標註
貼上原始與修訂版即可看到逐行差分。文件、配置、程式碼審查、文章編輯場景適用。
運作原理
差分如何計算
用最長公共子序列 (LCS) 演算法找兩版本間的共享行。共享的為「未變」, 僅在原始中的為「刪除」, 僅在修訂版中的為「新增」。結果是帶行號雙方對照的清晰註解。
LCS 是 git 與多數 diff 工具採用的標準方法, 選最長可能的匹配序列, 通常匹配人會說的「同一段」。1 萬行以上輸入執行時呈二次增長; 大日誌對比請用流式 diff。
適用場景
文件修訂: 起草版本間到底改了什麼。法律合同、服務條款、任何「改了什麼」重要的文本。
配置檔案: 對比兩個 .env 或 YAML 找配置錯誤。或兩版部署指令碼。
文章編輯: 作家在上下文中看編輯修改, 尤其幾行變化的場景。
程式碼審查 (輕量用): 短程式碼片段。真正程式碼審查請用懂語法的工具 — git diff 語義標誌或專門的審查工具更好。
限制
我們按行粒度比較。把行內 'cat' 改成 'cats', 整行顯示為「刪除並新增」 — 不高亮單個 's'。詞級和字元級 diff 對此有用, 但長行難讀。
尾部空白顯著 — 'foo' 與 'foo ' (尾部空格) 算不同行。需要忽略空白請先規範化。
順序很重要。同段落不同位置算「刪除並新增」。本工具不檢測「移動」塊。
常見問題
›支援詞級 diff?
暫不 — 僅行級。短對比場景的字元或詞粒度後續可能新增。
›可以多大文本?
實際可達每邊幾千行。二次複雜度意味著超大輸入可能短暫卡住瀏覽器標籤。
›資料會上傳嗎?
不會。差分完全在本地。
›尾部空格顯著嗎?
顯著。僅尾部空白不同的兩行算不同行。需忽略空白請貼上前規範化。
›可以儲存差分嗎?
不能儲存為檔案。當前可複製貼上渲染文本或截圖。
›與 git diff 演算法相同?
概念上相同 — 我們用 LCS 是 git 選項之一。git 預設類似但更復雜的 (Myers diff, 選項中有 Patience)。短輸入輸出基本一致。
›為什麼僅一個詞改變整行被標記?
因為按行粒度。字元級 diff 會高亮變化詞但長行更難讀。
›可以對比 2 個以上版本?
本工具不行。多向合併請用專門的 3-way diff 工具。
相關工具
最後更新: