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 的目标文件。