摘要:我们在windows平台上用过beyond compare来进行文件比较,在linux平台上也有类似的东西,还是免费的。那就是vimdiff,它是vim的diff模式,依赖于diff命令。在文件比较方便比diff要强大的多,它有简单明了的界面以及对比结果一目了然的特点,容易对多处差异进行对比和合并。
启动方法
保证安装了vim和diff命令
使用以下方法启动
vimdiff file1 file2 #垂直
vimdiff -o file1 file2 #水平
切换视角
Ctrl-w w #在不同窗口间跳转
Ctrl-w K #把当前窗口移到最上边
Ctrl-w H #把当前窗口移到最左边
Ctrl-w J #把当前窗口移到最下边
Ctrl-w L #把当前窗口移到最右边
其中K和J两个操作会把窗口改成水平分割方式。
对比差异
- 只在某一文件中存在的行的背景色被设置为蓝色,而在另一文件中的对应位置被显示为绿色。
-
两个文件中都存在,但是包含差异的行显示为粉色背景,引起差异的文字用红色背景加以突出。
-
+-- 7 lines: #include <stdio.h>-------------------
表示折叠的行 可以用zo
(open)可以把折叠的行打开,使用zc
(close)可以把折叠的行关闭 -
-------------------------------------------
表示删除的行 -
上下文的展开和查看:比较和合并文件的时候经常需要结合上下文来确定最终要采取的操作。Vimdiff 缺省是会把不同之处上下各 6 行的文本都显示出来以供参考。其他的相同的文本行被自动折叠。如果希望修改缺省的上下文行数,可以这样设置(设置上下文为3行):
:set diffopt=context:3
光标
可以使用快捷键在各个差异点之间快速移动。
]c
跳转到下一个差异点[c
跳转到上一个差异点2]c
如果在命令前加上数字的话,可以跳过一个或数个差异点,从而实现跳的更远。比如如果在位于第一个差异点的行输入2]c
,将越过下一个差异点,跳转到第三个差异点。
合并
用到的命令:
dp
(diff "put")
如果希望把另一个文件的内容复制到当前行中,可以使用命令
do
(diff "get",之所以不用dg,是因为dg已经被另一个命令占用了)-
:diffupdate
在修改一个或两个文件之后,vimdiff会试图自动来重新比较文件,来实时反映比较结果。但是也会有处理失败的情况,这个时候需要手工来刷新比较结果 -
<ESC>, u
如果希望撤销修改,可以和平常用vim编辑一样,直接但是要注意一定要将光标移动到需要撤销修改的文件窗口中。
备注: 如果有多个窗口的话只要在dp
、do
命令前加数字代表把当前行复制到哪个窗口中或者把哪个窗口中的复制到当前窗口
评论