VIM学习笔记 比较文件-消除差异(diffget & diffput)

在操作系统的命令行中使用以下命令,可以利用Vim比较多个文件:

$ vimdiff file1 file2

如下图所示,红色高亮区域显示了两个文件中第三行的差异,左侧文件包含文字“ACTUAL”,而右侧文件则包含文字“BUDGET”:

vimdiff

在比较文件并发现不同之处以后,可以通过命令消除这些差异点。

获取差异

使用]c命令,可以移动到差异处。

使用:diffgetdo命令,将从另一文件中获得差异文字并复制到当前文件中,以消除差异。

例如,在左侧文件中执行:diffget命令,会将右侧文件中的文字“BUDGET”,复制到左侧文件,并替代掉差异文字“ACTUAL”:

diffget

如果希望一次性获取整个文件的差异,那么可以使用以下命令:

:%diffget

推送差异

使用:diffputdp命令,将以当前文件为基准,消除另一文件中的差异。

例如,在左侧文件中执行:diffput命令,会将左侧文件中的文字“ACTUAL”推送到右侧文件,并替代掉差异文字“BUDGET”:

diffget

如果希望一次性推送整个文件的差异,那么可以使用以下命令:

:%diffput

使用:diffget和:diffput命令消除差异之后,vim会自动刷新差异的高亮显示;如果您采用手动修改文字来消除差异,那么需要执行:diffupdate命令来刷新差异的高亮显示。

消除多个文件间的差异

我们可以同时比较多个文件之间的差异。例如以下命令,将比较三个文件:

$ vimdiff file1 file2 file3

如下图所示,红色高亮区域显示了三个文件中第三行的差异:

vimdiff

因为此时打开了多个缓冲区 (Buffer),所以需要执行:diffget [bufspec]和:diffput [bufspec]命令以指明缓冲区。例如:diffput 3命令,将推送差异到第三缓冲区:

vimdiff

其中,[bufspec]参数可以是缓冲区编号,缓冲区名称,或者缓冲区名称的一部分。可以使用:buffers命令,来查看包含缓冲区编号和名称的列表。

帮助信息

使用:help copy-diffs命令,可以查看合并/消除差异的更多帮助信息。

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