如何防止`git difftool`调用另一个`vimdiff`?

时间:2016-09-29 20:12:24

标签: git vim neovim git-difftool

我已配置git(如下所示)vimdiff作为difftool,并在我拨打:qa后立即比较另一对文件而不提示。这很棒。唯一的问题是有时在许多文件中存在差异。如何阻止git运行另一个vimdiff实例并继续差异队列?

git config --global diff.tool vimdiff
git config --global difftool.prompt false
git config --global alias.d difftool

我尝试使用非零错误代码(vim)退出:cq,但它无效。

如果答案适用于vimnvim,那会很棒。

2 个答案:

答案 0 :(得分:1)

我在不同的堆栈上得到了解决方案:

git config --global difftool.trustExitCode true
git config --global mergetool.trustExitCode true

然后退出:cq

答案 1 :(得分:1)

请注意,您不仅可以将mergetool.trustExitCode true应用于vimdiff,而且还可以应用于nvimdiff

在Git 2.29(2020年第四季度)中,已经重构了基于vim的变体“ git mergetool({man的现有后端,然后添加了对“ nvim”的支持。

请参见commit 1186897commit 83bbf9bpudinha (pudinha)(2020年7月29日)。
(由Junio C Hamano -- gitster --commit 873fa13中合并,2020年8月17日)

mergetools:添加对nvimdiff(neovim)系列的支持

签名人:pudinha


在Git 2.30(Q1 2021)中添加了nvimdiff中的mergetool支持后引入的固定回归。

请参见commit 12026f4commit 6bc9082Johannes Schindelin (dscho)(2020年11月11日)。
(由Junio C Hamano -- gitster --commit d203add中合并,2020年11月21日)

mergetool:避免让list_tool_variants破坏用户定义的设置

签名人:Johannes Schindelin

83bbf9b92ea8中(“ mergetool--lib:增强对vimdiff风格工具变体的支持”,2020-07-29,Git v2.29.0-rc0-merge 3}}),我们本着Postel法则的精神引入了list_tool_variants函数:宽容您接受的输入。在这种特殊情况下,我们不仅希望允许bc,而且还允许bc3作为“超越比较”工具的名称。

但是,此补丁被忽略的是,它完全允许用户覆盖mergetools/中的默认设置。
但是,既然我们去除了尾随的数字,那么用户给该工具提供的名称实际上可能不在list_tool_variants产生的列表中。

因此,我们对diff_cmdmerge_cmd进行相同操作:如果检测到用户定义的设置,请使用普通版本覆盖它。