一次性使用 Vimdiff 和 git

So8*_*res 7 diff vim git vimdiff

我使用 vimdiff 作为我的 git difftool。

假设我已经更改了十二个文件。问题是有时我会在运行git diff第四个或第五个文件时看到一些我想编辑/更改的内容。有时我需要在此之外再做一些改变。问题是我不能只是:qa回到黑客攻击,因为在 vimdiff 中弹出了六到七个不同的差异。:qa每次我想中止 git diff 时都不查看所有这些文件,这真的很乏味。

有什么方法可以将 vimdiff 设置为 git 的 difftool,以便所有差异都在同一个 vim 实例中打开,例如在单独的选项卡中?

jme*_*etz 4

您可以使用此处发布的 vim 插件。然后你只需要设置 difftool:

[multidiff]
  tool = vd -f
Run Code Online (Sandbox Code Playgroud)

作为替代应用程序,我建议meld,它将向您显示修改后的文件 - 然后您可以仅选择您想要查看的差异的文件。

请参阅此处的屏幕截图作为示例。

除了 Marcos 有用的评论之外,如果您想使用第三种(手动替代方案),vimdiff我会建议meld在脚本中使用以下策略(可能python):

  • 使用git diff-files --name-statusgit diff-index --name-status --cached HEAD识别需要检查的文件。
  • 获取这些文件的缓存版本并放入/tmp/
  • 立即打开所有这些文件 - 已更改的文件及其缓存版本 -vimdiff尽管在您需要的意义上很可能是不可能的 - 请参见下文。

然而,由于vimdiff它本身似乎无法原生处理多个差异选项卡,所以我推荐上面的其他建议之一。