vimdiff
vimdiff的常用命令
http://www.ibm.com/developerworks/cn/linux/l-vimdiff/?
http://hi.baidu.com/_jg_/blog/item/ff62e6d5d9ecf315a08bb77c.html?
http://hi.baidu.com/nkhzj/blog/item/e6b5a7017222100a1d958307.html?
★ 跳轉到下一個diff點:
請使用?]c?命令★ 跳轉到前一個diff點:
請使用?[c?命令
如果在命令前加上數字的話,可以跳過一個或數個差異點,從而實現跳的更遠。比如如果在位于第一個差異點的行輸入"2]c",將越過下一個差異點,跳轉到第 三個差異點。
★ 文件比較的最終目的之一就是合并,以消除差異。如果希望把一個差異點中當前文件的內容復制到另一個文件里,可以使用命令:
dp (diff "put")
★ 如果希望把另一個文件的內容復制到當前行中,可以使用命令:
do (diff "get",之所以不用dg,是因為dg已經被另一個命令占用了,所以用了diff "obtain")
★ 如果希望手工修改某一行,可以使用通常的vim操作。如果希望在兩個文件之間來回跳轉,可以用下列命令序列:Ctrl-w, w
★ 在修改一個或兩個文件之后,vimdiff會試圖自動來重新比較文件,以便實時地反映比較結果。但是有時候會處理失敗,這個時候就需要手工來刷新。
:diffupdate
★ 如果希望撤銷修改,可以和平常用vim編輯一樣,直接<ESC>, u??
★ zo (folding open)打開折疊代碼。之所以用z這個字母,是因為它看上去比較像折疊著的紙:)
★ zc (folding close)重新折疊起來。
★ 補充一條: 如果想交換上/下、左/右兩個分隔窗口的位置,可以使用 ctrl-w,r 命令
?
更詳細的介紹如下
?http://blog.chinaunix.net/u1/34500/article_129477.html
vimdiff [options] file1 file2 [file3]
[功能]
同時打開兩個或者多個文件,進行比較。
[描述]
vimdiff會將兩個文件的相同指出盡量列在同一位置上面,便于查對比較。其命令基本和vim是一致的。
vimdiff使用vim啟動兩個或者多個文件,每個文件有其自己的窗口。每個文件中不同的地方會用高亮顯示出來。它在進行改變的檢查以及將改動從一個版本的文件移動到另一個版本的情況下非常方便。首先你得保證安裝了vim才能是用vimdiff.用這個命令安裝:
#apt-get install vim-full
其他類似的工具還tkdiff,meld 和 xfdiff4等。?
[舉例]
*同時打開main.cpp和main2.cpp,垂直方向分屏:
$vimdiff main.cpp main2.cpp
或$vim -d main.cpp main2.cpp
這樣會同時打開兩個文件垂直在兩欄顯示,可以打開不止兩個文件。
*同時打開main.cpp和main2.cpp,水平方向分屏:
$vimdiff -o main.cpp main2.cpp
這樣會同時打開兩個文件在上下兩欄顯示.
**打開文件之后
可以看見不同的地方會高亮顯示,相同的地方默認會被折疊起來。如下常用操作:
*跳到下一個不同的地方:
輸入"]c".
*跳到上一個不同的地方:
輸入"[c".
*用另外一個窗口的不同處替換當前:
輸入"do".
這里,前提是用']c'或者'[c'跳到相應的不同處,執行完畢之后,當前窗口當前位置內容被替換為另外一個窗口的當前位置內容。注意這里是兩個文件的情況,當前窗口有多于兩個文件時無法進行。
*先指定范圍1-100行,再用另外一個窗口的不同處替換當前:
輸入"1,100 diffg".
或輸入"1,100 diffget".
這里,等同于do不過指定了范圍,如果有緩沖還可在diffg后面指定緩沖名字。
*先指定范圍1-100行,再用指定3號緩沖(假設是文件file3)的不同處替換當前:
輸入"1,100 diffg 3".
或輸入"1,100 diffget 3".
這里,在diffg后面指定緩沖名字。
*用當前替換另外一個窗口的不同處:
輸入"dp".
這里,前提是用']c'或者'[c'跳到相應的不同處,執行完畢之后,另外一個窗口的當前位置內容被替換成當前窗口當前的位置內容。注意這里是兩個文件的情況,當前窗口有多于兩個文件時無法進行。
*先指定范圍1-100行,再用另外一個窗口的不同處替換當前:
輸入"1,100 diffpu".
或輸入"1,100 diffput".
這里,等同于dp不過指定了范圍,如果有緩沖還可在diffpu后面指定緩沖名字。
*先指定范圍1-100行,再用指定3號緩沖(假設是文件file3)的不同處替換當前:
輸入"1,100 diffpu 3".
或輸入"1,100 diffput 3".
這里,在diffpu后面指定緩沖名字。
*新開一個水平窗口載入file文件進行對比:
輸入":diffsplit file".
這里新開的窗口是水平排列的,在不同窗口間移動的命令同vim。
*新開一個垂直窗口載入file文件進行對比:
輸入"vert diffsplit file".
這里,vert實際是vertical前綴的簡寫。新開的窗口是垂直排列的,在不同窗口間移動的命令同vim。
*強制更新文件的不同狀態:
輸入":diffupdate".
這里,當我們修改某一個文件的時候,vim會試圖使它和另外一個文件的不同之處保持更新,例如插入和刪除行。但是,更復雜的修改或者在一個行內的修改可能會導致不同處(vimdiff)沒有及時更新,這時候可以運行這個命令(diffupdate)進行強制更新。
*修改缺省的上下文行為3行:
輸入":set diffopt=context:3".
這里vimdiff 缺省是會把不同之處上下各 6 行的文本都顯示出來以供參考。其他的相同的文本行被自動折疊。如果希望修改缺省的上下文行數,可以這樣設置.
*打開折疊的文本:
輸入"zo".
*折疊折疊的文本:
輸入"zc".
*修改完畢之后保存所有文件:
輸入"wqa".
**
[其他]
其實vimdiff就是vim,只是一個符號鏈接而已,你可以file /etc/alternatives/*|grep bin/vim看看。
總結
- 上一篇: C语言长度为0的数组
- 下一篇: shell cut 取变量值