【问题标题】:Is there a way to view two diffs in one vim tab?有没有办法在一个 vim 选项卡中查看两个差异?
【发布时间】:2012-07-05 07:18:58
【问题描述】:

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

我该怎么做?有插件吗?

【问题讨论】:

    标签: vim diff git-merge vimdiff


    【解决方案1】:

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

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

    【讨论】:

    • 你仍然可以做一个 hack。
    【解决方案2】:

    如果你想比较 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> 对右窗格执行相同的操作。

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

    【讨论】:

      猜你喜欢
      • 2012-01-24
      • 2023-02-21
      • 2020-01-26
      • 2010-10-30
      • 2021-05-31
      • 1970-01-01
      • 2012-05-15
      • 2019-08-27
      • 1970-01-01
      相关资源
      最近更新 更多