星期日, 十二月 26, 2010

VIM学习笔记 比较文件(diff)

Vim通过调用外部的diff命令,可以对相似的文件进行比较。使用:help diff命令,可以查看关于比较文件的更多信息。

配置

在Windows系统下,请确认diff.exe已经存在于vim目录之下;并且在操作系统的PATH变量中,也包含了该目录:

diff

为了避免配色方案对比较结果显示效果的影响,我们可以在vimrc配置文件中,增加以下命令,以便在比较文件时使用默认的显示颜色:

au FilterWritePre * if &diff | colorscheme default | endif
if &diff
  colorscheme default
endif

比较

可以从命令行调用以下命令,来打开两个文件进行比较:

vim -d file1 file2

如果已经打开了文件file1,那么可以在Vim中用以下命令,再打开另一个文件file2进行比较:

:diffsplit file2

如果已经使用split打开了两个文件,那么可以分别在两个窗口里面输入以下命令,进行比较:

:diffthis

屏幕将被水平分隔,分别显示一个文件,其中不同的部分将被高亮显示。

  • 只在某一文件中存在的行,显示为蓝色
  • 而在另一文件中的对应位置的行,显示为绿色
  • 在两个文件中都存在的行,显示为紫色
  • 行中不相同的字符,显示为红色
  • 相同的行,没有高亮显示并且会被折叠。

如果想要垂直比较两个文件,可以使用以下命令:

:vert diffsplit file2

diff

折叠

使用zo命令,可以展开被折叠的相同的文本行;而zc命令,则可以重新折叠相同的行。

查看

比较文件时,经常需要结合上下文来确定最终要采取的操作。缺省情况下,是会把不同之处上下各6行的文本显示出来以供参考。其他的相同的文本行被自动折叠。如果希望修改缺省的上下文行数为3行,可以使用以下命令:

:set diffopt=context:3

滚动

如果你在一个文件中滚动屏幕,那么另一个文件也会自动滚动以显示相同的位置。你可以使用以下命令,取消联动:

:set noscrollbind

使用以下命令,将重新绑定联动:

:set scrollbind

利用以下命令,可以定义滚动方式:

:set scrollopt ver,hor,jump

其中:选项ver ,启用垂直同步滚动;选项hor ,启用水平同步滚动;而jump 选项,则在切换窗口时,使垂直滚动始终同步。

如果光标停留在两个文件的不同位置,那么可以使用下面的命令同步滚动:

:syncbind

更新

如果更改了某个文件的内容,vim又没有自动更新diff检查,那么可以使用如下命令更新:

:diffupdate

跳转

你可以用[c命令;跳转到前一个不同点;或者用]c命令,跳转到后一个不同点。

命令小结
:diffsplit分隔窗并比较文件
:diffthis比较文件
:diffupdate更新比较结果
zo展开
zc折叠
[c跳转到前一个不同点
]c跳转到后一个不同点

Ver: 2.0 | YYQ<上一篇 | 目录 下一篇>

2 条评论:

  1. 你的博客是用什么编辑的啊?

    回复删除
  2. 日志都是在Vim里手工编写HTML,然后再贴上来的。全手工打造 :)

    回复删除