跳到主要內容

文字比對(Diff)

貼上兩段文字,即時標出新增、刪除與差異,支援行與字兩種比對。

改一個字,在 diff 眼中的樣子

兩個版本只差最後一個字。

輸入
A: the quick brown fox / jumps over the lazy dog
B: the quick brown fox / jumps over the lazy cat
輸出
the quick brown fox
−
jumps over the lazy dog
+
jumps over the lazy cat

共同的第一行沒有標記,但有變動的那一行出現兩次 —— 一次 − 刪除、一次 + 新增。diff 是以「整行」為單位,所以改一個字元仍然是整行刪掉再整行插入。這就是為什麼重新排版一個檔案會毀掉 diff,即使實質內容沒變。

什麼是文字比對(Diff)?

當你有同一份文件的兩個版本——改前改後的稿子、兩份設定檔、貼上來的兩段程式碼——最快看出「差在哪」的方法就是 diff。這個文字比對工具把兩段文字並排比對,用顏色標出新增(綠)與刪除(紅),並可切換「行」或「字」層級。全程在你的瀏覽器本機完成,不上傳。

如何使用

  1. 把「原始」與「修改後」兩段文字分別貼進左右兩欄。
  2. 結果會即時顯示;下方標出共新增幾行、刪除幾行。
  3. 需要看句內細節時,切換到「字」比對。

常見用途

  • 比對程式碼或設定檔的兩個版本。
  • 看合約、文案改了哪裡。
  • 找出兩份清單的差異。想先清理格式再比,可用文字清理器。

只改一個字,為什麼整行都變紅綠?

用行比對時,只要一行裡有任何一個字元不同,整行就算「改過」——會顯示成一紅一綠(舊行刪掉、新行加回),即使你只改了一個字。這不是 bug,是行層級比對的定義。想精準看出「一句話裡到底哪個字變了」,切到「字」比對即可,它會只把不同的字標色。反過來,程式碼、設定檔、清單這類「以行為單位」的內容,用行比對最清楚。另外提醒:diff 是逐字精確的,兩份只差在行尾空白或換行符時會顯得很雜——先用文字清理器統一格式再比,真正的差異才會浮出來。

四種修改,分別長什麼樣?

這一頁對四種修改實際回傳的結果。改一個字:the quick brown fox − jumps over the lazy dog + jumps over the lazy cat —— 共同的那行沒有標記,有變動的那行出現兩次。插入一行:alpha + beta   gamma,刪掉一行:alpha − beta   gamma —— 各只有一行被標記,所以「相鄰的一減一加」代表修改,「單獨一個標記」才是真的插入或刪除。而只把三個詞從一行改成三行、內容完全沒動:

−
one two three
+
one
+
two
+
three

每一行都被標記了。行是這裡的比較單位,所以重新排版會毀掉 diff —— 這也是為什麼「統一換行符」要跟真正的修改分成兩個 commit。

常見問題

內容會被上傳嗎?

不會。比對全程在你的瀏覽器本機以 JavaScript 完成,兩段文字都不會上傳到任何伺服器,適合比對含機密的設定檔或程式碼。

「行比對」和「字比對」差在哪?

行比對以整行為單位,適合程式碼、設定檔、清單;字比對會標到「哪幾個字」不同,適合看一句話裡的細微改動。可隨時切換。

會忽略空白或大小寫嗎?

預設是逐字精確比對,空白與大小寫的差異都會被標出。若你想忽略,建議先用文字清理器統一格式再比。

可以比對很長的文字嗎?

可以,只要在瀏覽器記憶體範圍內。數千行通常沒問題;極長的內容比對會花一點時間。

延伸閱讀

如何比對兩段文字,一眼看出改了哪裡 →

嵌入此工具

把這個工具免費放進你的網站或部落格 —— 複製下面的程式碼貼上即可(內含一條回到本站的連結)。