如何让 "git difftool --dir-diff" 与 vim 一起工作

How to make "git difftool --dir-diff" working with vim

我很高兴与 git difftool --dir-diff 一起使用 beyond compare 来显示目录和文件之间的整体差异并浏览它们。

然而,当谈到 vimdiff 时,它似乎不支持来自 git 的 dir diff。我创建的一个 git 别名如下

    dirdiff = difftool --ignore-submodules --tool=vimdiff --dir-diff --no-symlinks

在我执行 git dirdiff HEAD~1 HEAD 之类的操作后,它会在 netrw 文件浏览器中内置 vim 左右列出我的 2 个目录。但是,在其中任何一个上按 Enter 都不会使文件夹在两侧展开,更不用说打开具有并排差异的文件了。

vimdiff 可以很好地在可视模式下显示单个文件差异,有没有办法让它也适用于 --dir-diff?

我从另一个 Whosebug thread 那里找到了解决方案。答案由@user744629 提供。按照他的建议

[alias]
    dirdiff = difftool --ignore-submodules --dir-diff --no-symlinks --tool=vimdirdiff

[difftool "vimdirdiff"]
    cmd = vim -f '+next' '+execute \"DirDiff\" argv(0) argv(1)' $LOCAL $REMOTE

之后您可以使用 git dirdiff HEAD HEAD~1 并排查看差异。