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

时间:2012-07-05 07:18:59

标签: vim diff git-merge vimdiff

我知道vim中的差异是页面本地的,这意味着我们在一个标签页中只能有一个差异,对吧?但是如果我想在一个标签页中有两个差异怎么办呢。例如,一个差异在顶部两个窗口之间,另一个差异在底部两个窗口之间。这是一个处理git merge confilict的公共事业。 我们可以在前两个窗口中进行远程提交更改diff,并在底部的两个窗口中使用本地文件和本地confilict文件diff,然后,我们确切知道远程中已经更改的内容导致了confilct并且手动修复它们。

我该怎么做?有插件吗?

2 个答案:

答案 0 :(得分:1)

差异中缓冲区的参与由标签页中可见的所有缓冲区的'diff'缓冲区设置决定(最多四个缓冲区)。实现你想要的东西需要一个“差异群体”的概念,例如:setlocal diff=group1,但今天不存在这样的事情。

今天没有Vim补丁(我能想到的)实现这一目标的唯一方法是在拆分窗口屏幕或tmux会话中运行两个独立的Vim实例。

答案 1 :(得分:0)

如果你想将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|set noscrollbind|normal gg<enter>拆分左窗格并滚动新窗格,

<c-W>l转到右侧窗格,

G:sp|set noscrollbind|normal gg<enter>对右窗格做同样的事情。

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