使用vimdiff查看所有“git diff”
我使用“”作为指导,设置了git diff,将其包装到vimdiff中,它按照预期工作,除非有许多文件进行了更改 当有多个文件发生更改时,我运行使用vimdiff查看所有“git diff”,git,vim,diff,vimdiff,Git,Vim,Diff,Vimdiff,我使用“”作为指导,设置了git diff,将其包装到vimdiff中,它按照预期工作,除非有许多文件进行了更改 当有多个文件发生更改时,我运行git diff,它会打开第一个文件,退出第一个vimdiff实例后,我会看到以下消息: external diff died, stopping at filename 这与我习惯的行为完全不同。我在过去使用SVN时也有类似的设置,当与多个文件进行比较时,我会查看第一个文件,然后使用:wq写入并退出,然后打开下一个有差异的文件 Git的情况并非如此。
git diff
,它会打开第一个文件,退出第一个vimdiff实例后,我会看到以下消息:
external diff died, stopping at filename
这与我习惯的行为完全不同。我在过去使用SVN时也有类似的设置,当与多个文件进行比较时,我会查看第一个文件,然后使用:wq
写入并退出,然后打开下一个有差异的文件
Git的情况并非如此。我尝试了
:n[ext]
,但这样做并不能用原始文件填充左侧窗口,从而使其与修改后的版本有所不同。您可以尝试git difftool
,它就是专门用来做这些事情的
首先,您需要将diff工具配置为vimdiff
git config diff.tool vimdiff
然后,当您想要区分时,只需使用git difftool
而不是git diff
。它会像你期望的那样工作
git config --global diff.tool vimdiff
git config --global difftool.prompt false
键入git difftool
将产生预期的行为
导航命令,
循环到变更集中的下一个文件,而不保存任何内容:vim中的qa
git d
来调用vimdiff
高级用例,
- 默认情况下,git使用-R选项调用vimdiff。您可以使用git config--global difftool.vimdiff.cmd'vimdiff“$LOCAL”“$REMOTE”覆盖它。这将以可写模式打开vimdiff,允许在扩散时进行编辑
在vim中循环到变更集中的下一个文件,并保存变更:wq
nvim
。以下是我最终使用的:
git config --global alias.d difftool -x <tool name>
如果要永久使用
vimdiff
进行git diff
,可以设置~/.gitconfig
文件:
git config --global diff.tool vimdiff
然后您可以使用gitdifftool
来区分
如果您只想临时使用vimdiff
,您可以每次运行该命令:
git difftool --tool=vimdiff
快到了!修改了一点,这正是我要找的+1尽管如此!vimdiff合并工具最近进行了更新:(和其他一些提交,但这是最大的一个)。不确定下一个维护版本何时发布,但如果您愿意从git.git构建,升级将属于您!只有我的两分钱:我的
df
别名为diff
和dt
别名为difftool
。此外,在Vim中键入:qa
将循环到下一个变更集而不保存任何内容。此解决方案非常好,只是在保存变更时必须键入“:w!”,而不是:w@jonyamo设置别名应始终基于我们使用某些命令的频率。我经常使用git diff
而不是git difftool
。所以我把d
化名为'diff',把'dt'化名为
difftool'。可用性比使用模式创建别名更重要。如何让“git diff”使用vimdiff?这个答案让我使用别名。如果我的别名“diff”不起作用。@Asenar“这个解决方案很好,只是在保存更改时必须键入:w!
,而不是:w
”。这是因为git使用-R
选项调用vimdiff
。您可以使用git config--global difftool.vimdiff.cmd'vimdiff“$LOCAL”“$REMOTE”覆盖它。。这将在可写模式下打开vimdiff。您负责mergetool,而不是difftool。但这仍然是一个有用的答案+1.@dotancohen真的很感谢,我从来没有注意到现在我犯了一个愚蠢的错误,可以编辑我的答案了。@NanheKumar,@dotancohen,在上面的答案中用diff
替换,也就是说,git config--global diff.tool vimdiff
nvimdiff
现在作为一个工具受到支持,因此您可以执行git config--global diff.tool nvimdifmdiff
。
git d <file>
git config --global diff.tool vimdiff
git difftool --tool=vimdiff