Review 證據台 · A 與 B 原文保持不變
Diff 是依明確規則產生的文字對齊。
紅色與綠色本身不是語意。比較粒度決定 token,ignore 選項會先改寫參與比較的投影文字;重複內容也可能存在不只一種同樣精簡的對齊方式。
VERSION A · IMMUTABLE
01 timeout = 30
02 region = us-east
03 retries = 2
VERSION B · IMMUTABLE
01 timeout = 45
02 region = eu-west
03 retries = 2
04 audit = true
差異對齊帶
GRANULARITY LENSES
以完整行觀察結構變更
在穩定上下文中定位詞與空白
比對 Unicode code point,不是 grapheme
比對規則收據
不可見變更檢查台
␍␊ → ␊⇥ → ····⍽ → ·␊ → ∅é → e + ◌́Review 粒度派工
line忽略縮排可能掩蓋 YAML 等語意變更word較粗粒度可能弱化標點差異line + 不可見字元EOL 格式可能製造大量雜訊word/characterUnicode 正規化與 placeholder 仍需另查語意邊界
文字對齊不等於理解程式或文件。
此工具不解析 AST、不理解重新命名的 symbol、不辨識搬移區塊、不做三方 merge 或衝突解決,也不搜尋外部語料做查重;它不保留富文件版面,更不能證明變更安全。
依明確規則執行文字比對
每個範例都提供兩份原文、比對規則與預期差異。下方標示不可見字元;載入編輯器的是真實字元。
載入範例會取代兩側輸入與所有比對選項。
依行檢視設定檔變更
依行 · 並排檢視 · 關閉所有忽略規則。
輸入
timeout = 30 region = us-east retries = 2
對照內容
timeout = 45 region = eu-west retries = 2 audit = true
預期結果:timeout 與 region 改變,retries 不變,新增 audit。依詞或字元可以再查看細節。
定位色碼中的一個字元
依字元 · 行內檢視 · 關閉所有忽略規則。
輸入
#aabbcc
對照內容
#aabbcd
預期結果:最後的 c 被移除,d 被新增。下方顯示匯出的行內文字。
#aabbc[-c-]{+d+}區分不換行空白與一般空白
依字元 · 行內檢視 · 不忽略空白。U+00A0 是不換行空白,U+0020 是一般空白。
輸入
user[U+00A0]name
對照內容
user[U+0020]name
預期結果:移除一個字元並新增另一個;兩側即使看起來相同,仍有差異。可到 Unicode 工具繼續查看碼點。
忽略 EOL 後比對 CRLF 與 LF
依字元 · 行內檢視 · 開啟忽略 EOL,關閉大小寫與空白忽略。顯示的 \r 與 \n 描述真實換行。
輸入
alpha\r\nbeta\r\n
對照內容
alpha\nbeta\n
預期結果:此規則下沒有差異。關閉忽略 EOL 後,可看到兩個歸位字元;僅一側少了檔尾換行,仍會產生差異。
檢查文字差異背後的意義
兩份資料使用一致的格式化設定,避免排版差異遮住值的變化。
查看看似相同文字背後的碼點、空白與正規化差異。
文字差異無法證明縮排或修改後的值符合設定檔語言要求。
經常比對時,可使用 Mac 工具的快捷鍵入口並離線處理。