一般在 Linux 系統中,如果要比較兩個文字檔案的差異,最常見的方式就是使用 diff 指令:
diff FILE_LEFT FILE_RIGHT不過因為 diff 的功能有限,要靠 diff 來辨識檔案之間的差異處也不是很方便,如果您會使用 Vim 這個編輯器,那麼改用 vimdiff 會方便許多。
vimdiff 的使用方式跟 diff 類似:
vimdiff FILE_LEFT FILE_RIGHT不過他會直接開啟 Vim 編輯器,以很直覺方式顯示檔案的差異,透過這樣的介面來閱覽程式碼會比直接看 diff 的輸出更好辨識。
vimdiff 畫面 |
如果您喜歡使用 GVim,也可以使用 gvimdiff,使用方式也都相同。
gvimdiff FILE_LEFT FILE_RIGHT
gvimdiff 畫面 |
除了以指令的方式呼叫 vimdiff 之外,在 Vim 的環境中也可以透過分割視窗的指令來啟動 diff 的功能。假設我們正在編輯一個檔案:
vim FILE_LEFT這時候我們可以直接使用這樣的指令來啟用 diff 的功能:
:vertical diffsplit FILE_RIGHT
在 Windows 平台中,Vim 7.3 與 7.4 版 _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 模式與一般的編輯模式區分開來,做一些特別的設定。
參考資料:IBM、vimdoc
沒有留言:
張貼留言