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