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看看。

posted on 2010-10-22 11:28  阿笨猫  阅读(55910)  评论(0编辑  收藏  举报