vim里面的diff使用笔记

来源:互联网 发布:java jsonnode 遍历 编辑:程序博客网 时间:2024/06/08 05:08

diff相关的一篇文章:http://blog.csdn.net/airekans/archive/2010/08/12/5805495.aspx

 


 

在vim里面使用diff功能,可以由vimdiff file1 file2这样从命令行启动,如果从vim里面启动diff模式的话,有下面几种方式:

  1. :vert diffs[plit] {file}   # 前面的vert说明打开的新窗口是竖直分开的。
  2. :difft[his]   # 将这个窗口标记为diff的一个文件,如果要diff两个文件的话,那么就需要diffthis这两个文件各一次。
  3. :vert diffp[atch] {patch}  # 将patch补丁到当前文件上,并且将结果显示在一个新的split出来的窗口里面。

在diff模式里面,两个文件相同的部分会被fold起来。而修改了的部分的上下几行会被显示出来。

 

下面是一个示例:

在diff的结果中,改变了的行会被标注出来,不相同的部分会被特别的颜色标注出来。
删除了的行会在该文件以--------------这样的形式标记出来。

在文件中修改的时候,如果diff的高亮显示不太正确的话,可以用:diffupdate来进行更新。

 

如果需要快速的在changes之间移动,可以使用[c]c来跳转到change的地方。

 

Diff里面最重要的两个功能,将修改从本文件同步到另外的文件,和反向的操作。

  1. dp   # 表示diff put,也就是将这个文件里面的不同的地方完全同步到diff的文件里面去。
  2. do   # 表示diff obtain,也就是将diff文件里面的内容同步到本文件里。

注意到上面这两个命令的最基本单位都是行,也即使他们修改都是整行的修改的。

如果要实现整个文件的同步,那么可以使用下面的两个命令:

  1. :diffg[et] # 将当前buffer与diff的buffer同步。
  2. :diffp[ut] # 将diff的buffer与当前buffer的内容同步。

上面这两个命令可以在前面加上范围,如:1,$+1diffg  就是将整个文件都同步。