学习了一段时间的Vim,直到最近才发现Vim的diff功能是如此方便,对比代码变化不再用处处去找diff软件或者依靠版本控制的diff了。强大的Vim。vim
下图是我在macVim中的diff效果。bash
下面是vimdiff的常见用法,总结了一下,不仔细看一遍手册,在各类场景下还真不必定能立刻想到最合适的命令。学习
在终端中直接以diff模式打开Vim:spa
1 vimdiff file1 file2 [file3 [file4]] #或者 2 vim -d file1 file2 [file3 [file4]]
使用GUI(gVim)的话:版本控制
1 gvimdiff file1 file2 [file3 [file4]] 2 3 #或者 4 5 vim -d -g file1 file2 [file3 [file4]]
mac用户使用macVim的话以下,这是vim doc中没有提到的:code
1 mvim -d -g file1 file2 [file3 [file4]]
上面的操做将会用vertical分割的方式打开文件进行diff,若是要使用水平分割,能够加入参数-oblog
1 vimdiff -o file1 file2 2 3 #或者以下,gvim和macvim类推 4 5 vim -d -o file1 file2
前面是使用diff模式直接打开Vim的方法,若是已经在Vim中要启用diff模式,则使用如下命令:it
1 :diffs[plit] {filename} #在当前窗口分割,载入另外一个文件filename进行diff 2 3 :difft[his] #将当前文件加入diff 4 5 :diffp[atch] {patchfile} #将buffer中的文件载入当前窗口进行diff
以上操做均可以加入 vimdiff 的其余 -options。io
若是在载入文件时要使用纵向分割,能够加上vert前缀命令:class
1 :vert diffs file2.txt
文件改动后,要刷新diff,可使用diffupdate命令
1 :diffu[pdate] #更新diff 2 3 :diffu[pdate] ! #对全部文件更新diff
在diff中的跳转:
1 ] c #下一个不一样 2 [ c #上一个不一样
在diff模式中,要关闭diff模式返回正常模式,可使用diffoff命令:
1 :diffo[ff] #将目前文件退出diff模式 2 3 :diffo[ff]! #将目前窗口中的全部文件退出diff模式
以上就是经常使用的vimdiff命令和方法,还有不少复杂的命令没有研究和列举,例如diffexpr, diffcopying 等等,功能就更增强大了。
在版本文件中随意切换、diff和跳转查看变动,在Vim中就是如此简单!