在Vim中获取两个垂直打开的窗口的差异


Answers:


154

要开始在所有可见窗口上进行比较:

:windo diffthis

:diffthis在每个窗口上执行。

要结束差异模式:

:diffoff!

(该!品牌diffoff应用于当前选项卡的所有窗口-它会是不错的,如果diffthis有相同的功能,但它没有。)


:windo命令使它变得更好。谢谢。我将对其进行映射以使其更容易。
法提赫·阿尔斯兰

1
很好的答案,但是请注意,如果打开minibufexplorer窗口,则应在此操作之前将其关闭。否则,diff将显示错误的结果。
baldrs 2014年

可以使用别名:windo difft[this]。参考::help diff
DmitrySandalov

@FatihArslan,:windo diffthis在我的情况下不执行任何操作,只是在行号旁边的左侧灰色列中保留。我打开了两个不同的Vim文件。
earik87

22

在要比较的每个窗口中键入:

:diffthis

如果要比较所有打开的窗口,可以执行以下操作:

:windo diffthis

windo将命令应用于所有打开的窗口)


6

跟进之前的答案,

  • :windo difft(的缩写diffthis)将在所有打开的窗口中启动差异模式。
  • :windo diffo(的缩写diffoff)将在所有打开的窗口中停止差异模式。

vimrc为了方便起见,我具有以下映射:

command! Difft windo diffthis
command! Diffo windo diffoff

3

根据先前的答案,我改编了@cxw提供的映射。以下映射自动关闭NERDTree并比较打开的窗口。NERDTree是否关闭并不重要,它的工作方式相同。我经常这样做,因此节省了很多时间。

command! Difft NERDTreeClose | windo diffthis
By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.