是否有办法在一个vim选项卡中查看两个差异?

是否有办法在一个vim选项卡中查看两个差异?,vim,diff,git-merge,vimdiff,Vim,Diff,Git Merge,Vimdiff,我知道vim中的差异对于页面是本地的,这意味着我们在一个选项卡页面中只能有一个差异,对吗?但是如果我想在一个标签页上有两个差异呢。例如,一个diff位于顶部两个窗口之间,另一个diff位于底部两个窗口之间。这是处理git merge Conflict的一个原则。 我们可以在顶部的两个窗口中设置远程提交更改的差异,在底部的两个窗口中设置本地文件和本地确认文件的差异,然后,我们确切地知道是什么原因导致了远程提交更改,并手动进行修复 我该怎么做?是否有插件?缓冲区在差异中的参与由选项卡页面中所有可见缓

我知道vim中的差异对于页面是本地的,这意味着我们在一个选项卡页面中只能有一个差异,对吗?但是如果我想在一个标签页上有两个差异呢。例如,一个diff位于顶部两个窗口之间,另一个diff位于底部两个窗口之间。这是处理git merge Conflict的一个原则。 我们可以在顶部的两个窗口中设置远程提交更改的差异,在底部的两个窗口中设置本地文件和本地确认文件的差异,然后,我们确切地知道是什么原因导致了远程提交更改,并手动进行修复


我该怎么做?是否有插件?

缓冲区在差异中的参与由选项卡页面中所有可见缓冲区的
'diff'
缓冲区设置决定(最多四个缓冲区)。实现您想要的功能需要一个“差异组”的概念,例如
:setlocal diff=group1
,但类似的概念在今天并不存在


今天,在没有Vim补丁的情况下(我可以想到),实现这一点的唯一方法是在分割窗口屏幕或tmux会话中运行两个单独的Vim实例。

如果您想比较a.txt和B.txt,以及a.java和B.java,您可以:

echo two way diffs separator > separator
cat A.txt separator A.java > A
cat B.txt separator B.java > B
vimdiff A B
然后输入命令

G:sp |设置noscrollbind | normal gg
拆分左窗格并删除新窗格的滚动条

l
要转到右侧窗格

G:sp |设置noscorlbind | normal gg
对右窗格执行相同的操作


当然,这并不理想:顶部窗口的光标没有链接,如果你向下或向上滚动太多,每个缓冲区也包含另一个缓冲区。

你仍然可以进行破解。