0

我知道 vim 中的差异是页面本地的,这意味着我们只能在一个标签页中有一个差异,对吗?但是,如果我想在一个标签页中有两个差异怎么办。例如,一个差异在顶部两个窗口之间,另一个差异在底部两个窗口之间。这是处理 git merge 冲突的常见问题。我们可以在顶部两个窗口中设置远程提交更改差异,在底部两个窗口中设置本地文件和本地冲突文件差异,然后,我们确切地知道远程中的更改导致冲突并手动修复它们。

我怎样才能做到这一点?有没有插件?

4

2 回答 2

1

缓冲区是否参与 diff 取决于'diff'选项卡页中所有可见缓冲区的缓冲区设置(最多四个缓冲区)。实现你想要的需要一个“差异组”的概念,例如:setlocal diff=group1,但今天不存在这样的东西。

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

于 2012-07-05T07:56:29.030 回答
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>对右窗格执行相同的操作。

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

于 2014-04-04T09:12:31.633 回答