在Vim中对两个垂直打开的窗口进行差分

125

我已经打开了两个文件。它们是垂直模式下的,相邻排列。我能否在不离开或关闭 Vim 的情况下立即查看这两个文件的差异?

4个回答

198

开始在所有可见窗口上执行差异比较:

:windo diffthis

该命令在每个窗口上执行:diffthis

要结束差异模式:

:diffoff!

使得diffoff适用于当前标签页的所有窗口 - 如果diffthis也有同样的功能就好了,但它没有。)


:windo命令使它变得更好。谢谢。我会将其映射以使操作更简便。 - Fatih Arslan
2
这是一个很好的答案,但要注意,在执行此操作之前应该关闭 minibufexplorer 窗口(如果已打开)。否则 diff 会显示不正确的结果。 - baldrs
1
可以使用别名:windo difft[this]。参考::help diff - DmitrySandalov

28

在你想要进行比较的每个窗口中,输入以下命令:

:diffthis

如果你想对所有打开的窗口进行差异比较,可以执行以下操作:

:windo diffthis

(windo将应用该命令到所有已打开的窗口)


10

在之前的答案基础上,

  • :windo difft(简写为diffthis)将在所有打开的窗口中启动比较模式。
  • :windo diffo(简写为diffoff)将停止所有打开窗口中的比较模式。

我在我的vimrc文件中设置了以下映射,以使其更易于操作:

command! Difft windo diffthis
command! Diffo windo diffoff

6

继之前的回答后,我根据 @cxw 提供的映射进行了修改。以下映射会自动关闭 NERDTree 并对打开的窗口进行差异比较。无论 NERDTree 是否关闭,它都可以正常工作。我经常使用这个功能,因此它节省了我很多时间。

command! Difft NERDTreeClose | windo diffthis

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接