2012-07-05 56 views
0

我知道vim中的差异是页面本地的,这意味着我们只能在一个标签页中有一个差异,对吧?但是如果我想在一个标签页中有两个差异呢。例如,一个diff位于顶部两个窗口之间,另一个diff位于底部两个窗口之间。这是处理git merge confilict时的一个常见问题。 我们可以让远程提交改变diff在最上面的两个窗口中,并且本地文件和本地confilict文件diff在最下面的两个窗口中,然后我们确切地知道在远程引起的错误并修复了它们。有没有办法在一个vim选项卡中查看两个差异?

我该怎么做?有没有插件?

回答

1

缓冲区参与diff由缓冲区设置的'diff'决定,用于标签页内可见的所有缓冲区(最多4个缓冲区)。实现你的愿望需要一个“差异组”的概念,例如:setlocal diff=group1,但今天并不存在这样的事情。

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

+0

你可以做一个黑客攻击。 – user2987828

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>分裂左窗格中和debind新窗格的滚动,

<c-W>l去走右边的窗格中,

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

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

相关问题