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