我知道vim中的差异是页面本地的,这意味着我们在一个标签页中只能有一个差异,对吧?但是如果我想在一个标签页中有两个差异怎么办呢。例如,一个差异在顶部两个窗口之间,另一个差异在底部两个窗口之间。这是一个处理git merge confilict的公共事业。 我们可以在前两个窗口中进行远程提交更改diff,并在底部的两个窗口中使用本地文件和本地confilict文件diff,然后,我们确切知道远程中已经更改的内容导致了confilct并且手动修复它们。
我该怎么做?有插件吗?
答案 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>
对右窗格做同样的事情。
当然,它并不理想:顶部窗口的光标没有链接,如果向下或向上滚动,每个缓冲区也包含另一个缓冲区。