代码之家  ›  专栏  ›  技术社区  ›  Pete Hodgson

如何在vim中并排查看多个git diff

  •  10
  • Pete Hodgson  · 技术社区  · 15 年前

    我希望能够运行一个命令,在vim中打开一个git diff,对于diff集中的每个文件都有一个选项卡。

    例如,如果我在我的工作树中更改了foo.txt和bar.txt文件,然后运行命令,我将看到vim打开时有两个选项卡。第一个选项卡将包含工作树中foo.txt和存储库中foo.txt之间的并排差异,第二个选项卡将包含bar.txt的并排差异。

    有人有什么想法吗?

    4 回复  |  直到 8 年前
        1
  •  7
  •   Benjamin Bannier    15 年前

    我会这样做(尽管这不是一个命令)

    1. 在新文件中打开更改的文件 vim 标签:

      vim-p$(git diff—仅名称)

    2. 对于每个缓冲区,用 vcscommand vim plugin

      VCVSIMIMIFO

    这提供了一个很好的区别,虽然不是补丁形式。

    为了我能坚持的任何事情 git diff .

    编辑

    就像dave在下面写的,步骤1和步骤2可以通过使用

    vim -p $(git diff --name-only) -c "tabdo VCSVimDiff"
    
        2
  •  4
  •   Kurt MacDonald    11 年前

    改编了本杰明·班尼尔和戴夫·柯比的上述回答。

    因为我使用了逃犯.vim,所以我将上面的内容改编为我最常用的用例,查看最后两次提交之间的差异:

    vim -p $(git diff --name-only HEAD~1 HEAD) -c "tabdo :Gdiff HEAD~1"
    

    将所有更改加载到选项卡中要比使用 git difftool .

        3
  •  1
  •   William Pursell    15 年前

    尽管它不能完全满足您的要求,但git difftool可能是您的最佳选择。“git difftool--tool=vimdiff--no prompt head”的开箱即用行为是为工作目录中的每个文件依次启动vimdiff并进行更改。

        4
  •  0
  •   Community CDub    8 年前

    这个简单的插件对我很有用: TabMultiDiff . 它基本上为传递给vim的每对文件创建一个diff选项卡。该选项卡以每对中的第二个文件命名。

    注意它不是 plugin manager compatible ,因此需要通过复制手动安装 tab-multi-diff.vim .vim/plugin .

    下面是比较两对简单文件(a a a/aab和aac/aad)的屏幕截图。注意,我也使用 vim-scripts/diffchar.vim 这就是为什么突出显示单个字符的原因。 enter image description here