使用 vimdiff 对比文件

vim

https://www.bilibili.com/video/BV1bA411M7c4

如果想知道两个文件是否相同,
可以使用哈希函数来计算文件的摘要,
md5sum a b
然后对比结果就知道;

如果想知道具体内容有哪些差异,
可以使用GNU diff 命令来对比差异,
diff a b -y

如果想对比的同时进行修改编辑,
可以结合Vim来使用,
这个命令叫做 vimdiff

比如说现在要对比修改文件 a 和 b,
使用命令

vimdiff a b

或者

vim -d a b

就可以以对比的模式打开,
有差异的行会以不同背景颜色高亮显示,

前后几行会展开显示,
方便了解上下文;

如果想在各个文件窗口之间切换,
使用 ctrl+w h/j/k/l 命令。

使用 [ c 或者 ] c在差异之间跳转;

如果修改差异行的时候,
想使用另外一个文件对应的行的内容,
可以将光标定位到差异点,

使用 :diffget 或者 do 命令,

如果想用当前行的内容,

替换另外一个文件对应的行,
可以使用 :diffput 或者 dp 命令,

dp 是 diffput  的缩写,

do  是 diffget 的缩写,

(没有使用 dg 是因为已经有个dgg 命令)

do/dp操作针对的不是单行,

而是一个差异点的所有行。

 

还可以一次diffget或者diffput多个差异点,

例如:
:10,20diffget
diffget的范围就是10到20行,

修改完毕后使用:wqa保存并退出。

如果已经打开了一个文件,
然后想对比另外一个文件,

可以使用下面的命令,
:diffsplit file  水平切割窗口
:vert diffsp file  垂直切割窗口

 

如果已经有一个使用 diff 生成的补丁文件

例如:
diff a b > patch

可以使用

:diffpatch patch

这个命令生成一个临时文件,

内容是将这个补丁应用到当前编辑的文件中。

 

vim 还可以同时对比多个文件,

例如:
vim -d a b c

同时对比3个文件,
但是这个时候就不能使用 do 和 dp 命令了,
因为 vim 不知道 do 的来源文件和 dp 的目标文件。