emacs中比較文件差異ediff

 

Ediff 是 Emacs 提供的一種實時瀏覽文件間不同(diff)的工具,它可以比較兩個或三個文件間的不同,分別表示爲 file-A, file-B 或 file-C, 也可以比較兩個或三個emacs-buffer間的不同了。 Ediff的另一個強有力特性則是可以把正的比較的文件合併成第三個文件。 另外, Ediff還可以對目錄進行操作。

Ediff瀏覽文件的差異是在Emacs的兩個Buffer上進行,分別使用不同的顏色表示所存在的差異,而且Ediff對差異區域的差異進行了“細化”,diff程序只進行到“行”級別比較,而Ediff則是基於diff程序的輸出上,對差異區域進行更細緻的比較,從而得到區域內“單詞”級別上的差異比較。從而使比較文件間的細緻不同更加容易。

Ediff的更強功能:Ediff可以“忽略”某些細微的差別,例如有兩個程序幾乎相同,但是其中都些變量的命名卻不一樣,如bar變量在另一個程序中卻都foo,這對程序而言是“相同”,如果用一般的diff程序來查看該兩程序的差別,則這種沒有意義的變量名不同將充滿了整個差異輸出,從而不易找到真正的“程序不同”,而使用Ediff則可以忽略這類不同,很容易就定位我們真正想要的差異。

21以上版本的Emacs已經內置了Ediff程序包,無需另外安裝了。 Ediff主要提供瞭如下這些命令:

比較兩文件:M-x ediff-files M-x ediff
比較兩個Buffer:M-x ediff-buffers
比較三個文件:M-x ediff-file3 ediff3
比較三個Buffer:M-x ediff-buffer3
交互式使用一個patch:M-x ediff-patch-file epatch

Ediff命令被執行後,進行所謂的‘Ediff Session’它接受一些Ediff命令以決定Ediff的行爲。具體的表現是Ediff另外建立一個窗口(稱爲“Quick Help window”),當聚焦在該窗口輸入則被認爲是Ediff命令,否則仍是一般的Emacs編輯行爲,即還可以實時的編輯你正在比較的文件或Buffer。

在“Quick Help window”上輸入“?”使該窗口變大或是縮小,輸入q並確認則完成比較退出Ediff Session。

極常用的 Session Command(這些命令快捷鍵在“Quick Help window”上執行纔有效)

v ( V ):把文件-A,文件-B,文件-C(如果有),同步向下(向上)滾動,
< ( > ):把文件-A,文件-B,文件-C(如果有),同步向左(向右)滾動,
j:跳到差異區域,可以先加數值參數,如 ‘3j’則跳到第三個差異區域,‘j’則跳到第一個差異區域, 則‘-2j’跳到倒數第二個差異區域。跳到某區域後,再輸入的編輯命令就是針對該區域執行,即有一個“當前區域”的概念,而‘j’命令則就是用於使用絕對參數設置當前活動區域。
n (或 SPC 空格):跳到下一個差異區域,並設其爲當前區域,
p (或 DEL):跳到前一個差異區域,並設其爲當前區域,
ga ( gb gc ):根據光標在Buffer-A(或Buffer-B, Buffer-C)中的位置,設置一個離它們最近的差異區域爲當前活動區域
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章