启动diff
在VIM中开启diff的方式有很多,下面介绍几种常用的场景。
外部直接打开两个文件
1 2 3 4 | # 直接使用vimdiff指令 vimdiff FILE_1 FILE_2 # 使用vim指令加-d参数 vim -d FILE_1 FILE_2 |
打开文件之后再进行文件比较
1 2 3 4 5 6 | # 先打开一个文件,再打开另一个文件进行对比 vim FILE_1 :vertical diffsplit FILE_2 # 直接打开两个文件,在进行比较 vim -On FILE_1 FILE_2 :diffthis # 要在两个窗口都输入 |
改变文件位置
可以根据个人习惯和文件格式来更改对比文件的显示位置。
1 2 3 4 | Ctrl-w K # 把当前窗口移到最上边 Ctrl-w H # 把当前窗口移到最左边 Ctrl-w J # 把当前窗口移到最下边 Ctrl-w L # 把当前窗口移到最右边 |
锁定和解锁
在进行文件比较时,默认是锁定了两个文件的滚动条的。
1 2 | :set noscrollbind # 解锁 :set scrollbind # 锁定(会重新对齐) |
移动光标
在修改文件时需要移动光标位置,VIM下的移动方式都可以,但是多了一个跳转到差异行的快捷键。
1 2 3 4 | ]c # 跳到下一个差异点 [c # 跳到上一个差异点 n]c # 越过n哥差异点跳到下一个差异点 n[c # 越过n哥差异点跳到上一个差异点 |
文件合并
比较文件的目的一般是将两个文件合并为一个文件,diff提供了便捷的合并方式。
1 2 | dp # diff “put” 将此文件的内容复制到另外一个文件中 do # diff “get” 将另外一个文件的内容复制到此文件中 |
手动修改
如果两边的文件都不尽如人意,你可以跳转到相应窗口,手动修改文件。
1 2 3 4 5 | ctrl+w # 跳转到下个窗口 ctrl+h # 跳转到左边窗口 ctrl+j # 跳转到下面窗口 ctrl+k # 跳转到上面窗口 ctrl+l # 跳转到右边窗口 |
手动更新
有时,在修改完成后,VIM并没有自动刷新差异项,这时,我们需要手动更新文件。
1 | :diffupdate |
折叠无差异项
VIM是默认折叠无差异项的,我也可以手动打开和折叠,协助比较。
1 2 | zo # folding open 展开无差异项 zc # folding close 折叠无差异项 |
修改上下文行数
VIM默认显示6行上下文,我们可以根据自己需求修改。
1 | :set diffopt=context:n # 设置显示n行上下文 |