我正在尝试使用 vimdiff+ dirdiff.vim在 Vim 中区分使用 Git 版本化的多个文件。
对于 Mercurial,可以使用mercurial extdiff扩展。
我在网上找到的将 Vim 与 Git diff 集成的唯一方法是在单个文件上使用 vimdiff,如本文所述。
有谁知道如何使用vimdiff+dirdiff+git?
我正在尝试使用 vimdiff+ dirdiff.vim在 Vim 中区分使用 Git 版本化的多个文件。
对于 Mercurial,可以使用mercurial extdiff扩展。
我在网上找到的将 Vim 与 Git diff 集成的唯一方法是在单个文件上使用 vimdiff,如本文所述。
有谁知道如何使用vimdiff+dirdiff+git?
git-diffall
是我需要的,非常感谢。在这个关于 git difftool的页面和这个关于从命令行运行 vim+dirdiff 的帮助下,我写了我$HOME/.gitconfig
的:
[diff]
tool = default-difftool
[difftool "default-difftool"]
cmd = vim -f '+next' '+execute \"DirDiff\" argv(0) argv(1)' $LOCAL $REMOTE
[difftool]
prompt = false
放入 git-diffall
my后PATH
,我可以区分例如带有分支dev
的工作目录:
git diffall dev
如果我想从 Vim 永久修改工作目录,这--copy-back
也是我需要的:
git diffall --copy-back dev
从1.7.11版本开始,“git difftool”学习了“--dir-diff”选项来简化事情并且git-diffall
不再需要。
.gitconfig
包含:
[diff]
tool = default-difftool
[difftool "default-difftool"]
cmd = vim -f '+next' '+execute \"DirDiff\" argv(0) argv(1)' $LOCAL $REMOTE '+syntax off'
例如,使用分支区分工作目录dev
是通过以下方式完成的:
git difftool -d dev
Tim Pope 的逃犯是 vim 的典型 git 插件。它可能没有 dirdiff 的功能,但它确实完美地集成git status
了输出,通过键映射可以轻松地在修改后的文件之间导航。然后,您的输出中列出的任何文件git status
都可以轻松地与D映射进行差异化,从而允许您自定义进入更改的确切更改。
监视Vim 模块 fugitive 的提交会很有趣,因为从(git 1.7.11,2012年 6 月)开始,git 现在可以区分目录(即在打开之前显示所有要比较的文件difftool
)
参见“git difftool
给目录比较? ”
因此,添加该功能fugitive.vim
将是从文件到文件差异方法的演变。
然而,Zyx在评论中指出了这种方法的局限性:
完成这项工作所需要做的就是:
git diff --name-status
和git cat-file
,仅此而已(除了一些
vimscript
代码)。
而且,与 不同的是,这适用于任何支持git difftool
vcsdiff
和 vcs的 VCScat-file
Zyx 提到了他的项目aurum的逐个文件方法的示例:
我的 aurum 具有类似 dirdiff 的功能(
AuVimDiff full
打开一堆选项卡以vimdiff
查看有差异的文件),并且它从未使用任何类型的difftool
支持。
(见脚本aurum / autoload / aurum / vimdiff.vim
)
Zyx 补充道:
对于想要将此功能添加到逃犯的人来说,它不是一个很好的指南:
实际git diff --name-status
调用隐藏在 git 驱动程序中的一个由s:git.status
访问为调用的函数中repo.functions.status
(因为 mercurial 使用hg status -r rev1:rev2
,而不是hg diff --name-status
,我觉得这很合乎逻辑)。
因此,您必须在这里遍历三个抽象级别(存储库接口、shell 命令包装器以及只有实际的 git 调用)。
从头开始编写所有内容更快
Git 不直接支持目录差异,但可以通过 3rd 方扩展来完成。
签出git diffall
(披露:我写了这个脚本)。此脚本与工具集一起使用git config diff.tool <TOOL>
以执行真正的目录差异。
另外,请参阅以下相关问题: