技巧:Vimdiff 使用

來源:互聯網
上載者:User

http://www.ibm.com/developerworks/cn/linux/l-vimdiff/

啟動方法

首先保證系統中的diff命令是可用的。Vim的diff模式是依賴於diff命令的。Vimdiff的基本用法就是:

# vimdiff FILE_LEFT FILE_RIGHT

或者

# vim -d  FILE_LEFT  FILE_RIGHT

除了用這種方法啟動vim的diff模式之外,我們還可以用分割視窗命令來啟動diff模式:

# vim FILE_LEFT

然後在vim的ex模式(也就是"冒號"模式)下輸入:

:vertical diffsplit FILE_RIGHT

也可以達到同樣的效果。如果希望交換兩個視窗的位置,或者希望改變視窗的分割方式,可以使用下列命令:

1. Ctrl-w K(把當前視窗移到最上邊)

2. Ctrl-w H(把當前視窗移到最左邊)

3. Ctrl-w J(把當前視窗移到最下邊)

4. Ctrl-w L(把當前視窗移到最右邊)

其中1和3兩個操作會把視窗改成水平分割方式。

 

游標移動

接下來試試在行間移動游標,可以看到左右兩側的螢幕滾動是同步的。這是因為"scrollbind"選項被設定了的結果,vim會儘力保證兩側檔案的對齊。如果不想要這個特性,可以設定:

:set noscrollbind

可以使用快速鍵在各個差異點之間快速移動。跳轉到下一個差異點:

]c

反向跳轉是:

[c

如果在命令前加上數位話,可以跳過一個或數個差異點,從而實現跳的更遠。比如如果在位於第一個差異點的行輸入"2]c",將越過下一個差異點,跳轉到第三個差異點。

 

 

檔案合并

檔案比較的最終目的之一就是合并,以消除差異。如果希望把一個差異點中當前檔案的內容複寫到另一個檔案裡,可以使用命令

dp (diff "put")

如果希望把另一個檔案的內容複寫到當前行中,可以使用命令

do (diff "get",之所以不用dg,是因為dg已經被另一個命令佔用了)

如果希望手工修改某一行,可以使用通常的vim操作。如果希望在兩個檔案之間來回跳轉,可以用下列命令序列:

Ctrl-w, w

在修改一個或兩個檔案之後,vimdiff會試圖自動來重新比較檔案,來即時反映比較結果。但是也會有處理失敗的情況,這個時候需要手工來重新整理比較結果:

:diffupdate

如果希望撤銷修改,可以和平常用vim編輯一樣,直接

<ESC>, u

但是要注意一定要將游標移動到需要撤銷修改的檔案視窗中。

 

同時操作兩個檔案

在比較和合并告一段落之後,可以用下列命令對兩個檔案同時進行操作。比如同時退出:

:qa (quit all)

如果希望儲存全部檔案:

:wa (write all)

或者是兩者的合并命令,儲存全部檔案,然後退出:

:wqa (write, then quit all)

如果在退出的時候不希望儲存任何操作的結果:

:qa! (force to quit all)

內容相關的展開和查看

比較和合并檔案的時候經常需要結合上下文來確定最終要採取的操作。Vimdiff 預設是會把不同之處上下各 6 行的文本都顯示出來以供參考。其他的相同的文本行被自動摺疊。如果希望修改預設的上下文行數,可以這樣設定:

:set diffopt=context:3

可以用簡單的摺疊命令來臨時展開被摺疊的相同的文本行:

zo (folding open,之所以用z這個字母,是因為它看上去比較像摺疊著的紙)

然後可以用下列命令來重新摺疊:

zc (folding close)

是設定上下文為3行,並展開了部分相同文本的vimdiff螢幕:

 

結論

在無法使用圖形化的比較工具的時候,或者在需要快速比較和合并少量檔案的時候,Vimdiff是最好的選擇。

參考資料

  • Vim的首頁:http://www.vim.org
  • Vim中文協助:http://man.chinaunix.net/newsoft/vi/doc/help.html

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.