這裡介紹如何使用 Vimdiff 來比較兩個檔案之間的差異,這個小工具可以讓開發者在檢查不同版本的程式碼時輕鬆很多。
一般在 Linux 系統中,如果要比較兩個文字檔案的差異,最常見的方式就是使用 diff
指令:
diff FILE_LEFT FILE_RIGHT
不過因為 diff
的功能有限,要靠 diff
來辨識檔案之間的差異處也不是很方便,如果您會使用 Vim 這個編輯器,那麼改用 vimdiff
會方便許多。
vimdiff
的使用方式跟 diff
類似:
vimdiff FILE_LEFT FILE_RIGHT
不過他會直接開啟 Vim 編輯器,以很直覺方式顯示檔案的差異,透過這樣的介面來閱覽程式碼會比直接看 diff
的輸出更好辨識。
如果您喜歡使用 GVim,也可以使用 gvimdiff
,使用方式也都相同。
gvimdiff FILE_LEFT FILE_RIGHT
除了以指令的方式呼叫 vimdiff
之外,在 Vim 的環境中也可以透過分割視窗的指令來啟動 diff
的功能。假設我們正在編輯一個檔案:
vim FILE_LEFT
這時候我們可以直接使用這樣的指令來啟用 diff
的功能:
:vertical diffsplit FILE_RIGHT
_vimrc
中的 MyDiff()
會造成 diff
的功能不正常,這裡有提供修正的版本,將原本 _vimrc
中的 MyDiff()
替換掉即可正常使用。如果要在各個差異點之間快速移動,可以使用這兩個指令:
]c
:跳到下一個差異點。[c
:跳到前一個差異點。
卷軸與游標同步
在 vimdiff
預設的狀態下,左右兩邊的卷軸是保持同步的,也就是說不管您捲動哪一個檔案的卷軸,另一個檔案也會一起捲動,這個功能在比較檔案差異性時會很方便。而如果要取消卷軸同步的功能,可以使用這個 Vim 指令:
:set noscrollbind
而游標的同步功能也跟卷軸類似,若要取消可以使用
:set nocursorbind
唯讀模式
如果您只要查看檔案的差異,而不想更動到任何檔案內容,可以使用唯讀模式開啟 vimdiff
:
viewdiff FILE_LEFT FILE_RIGHT
或是使用 GVim:
gviewdiff FILE_LEFT FILE_RIGHT
自訂 vimdiff
環境
如果您想要針對 vimdiff
的環境設定一些 Vim 的選項(例如開啟行號),可以在 .vimrc
中加入以下設定:
if &diff " diff 模式設定 else " 非 diff 模式設定 endif
這樣就可以將 diff
模式與一般的編輯模式區分開來,做一些特別的設定。