diff相关的一篇文章:http://blog.csdn.net/airekans/archive/2010/08/12/5805495.aspx
在vim里面使用diff功能,可以由vimdiff file1 file2这样从命令行启动,如果从vim里面启动diff模式的话,有下面几种方式:
- :vert diffs[plit] {file} # 前面的vert说明打开的新窗口是竖直分开的。
- :difft[his] # 将这个窗口标记为diff的一个文件,如果要diff两个文件的话,那么就需要diffthis这两个文件各一次。
- :vert diffp[atch] {patch} # 将patch补丁到当前文件上,并且将结果显示在一个新的split出来的窗口里面。
在diff模式里面,两个文件相同的部分会被fold起来。而修改了的部分的上下几行会被显示出来。
下面是一个示例:
在diff的结果中,改变了的行会被标注出来,不相同的部分会被特别的颜色标注出来。
删除了的行会在该文件以--------------这样的形式标记出来。
在文件中修改的时候,如果diff的高亮显示不太正确的话,可以用:diffupdate来进行更新。
如果需要快速的在changes之间移动,可以使用[c 和]c 来跳转到change的地方。
Diff里面最重要的两个功能,将修改从本文件同步到另外的文件,和反向的操作。
- dp # 表示diff put,也就是将这个文件里面的不同的地方完全同步到diff的文件里面去。
- do # 表示diff obtain,也就是将diff文件里面的内容同步到本文件里。
注意到上面这两个命令的最基本单位都是行,也即使他们修改都是整行的修改的。
如果要实现整个文件的同步,那么可以使用下面的两个命令:
- :diffg[et] # 将当前buffer与diff的buffer同步。
- :diffp[ut] # 将diff的buffer与当前buffer的内容同步。
上面这两个命令可以在前面加上范围,如:1,$+1diffg 就是将整个文件都同步。