如何让git difftool使用gvim(gvimdiff)?

时间:2014-10-24 19:22:49

标签: git vim git-diff vimdiff

git似乎发生了一些变化,这使得gvim作为diff工具不能正常工作。具体来说,我总是习惯使用gvim -geometry标志来最大化窗口。现在,我最终将其中一个窗口留空(空/零行文件)。

2 个答案:

答案 0 :(得分:3)

好的,我找到了答案。为了正常工作,gvim必须保持在前台,而不是像往常一样分叉新进程。这是通过使用" -f"或" - nofork"启动gvim(或gvimdiff)时标记。

我现在设置了以下别名:

alias gitdg =' git difftool --noprompt --extcmd =" gvim -d --nofork -geometry 220x80 + 2000 + 40" '

请注意单引号和双引号的位置,以保持zsh shell的快乐。

我使用了gvim选项" -geometry"将diff窗口配置为220行x 80列。 " + 2000 + 40"表示窗口的左上角水平偏移2000像素,垂直偏离所有显示器左上角80像素,因此窗口显示在我的双显示器设置的右侧监视器上。尝试将其设置为" -geometry 160x40 + 60 + 20"看到变化的影响。

答案 1 :(得分:0)

在Windows Server 2012R2上,向我的.gitconfig添加以下内容也对我有用。我的经验是-d和-f对于我的设置不是必需的。即使是Windows,也请确保使用正斜杠“ /”作为路径信息。

[alias]
    d = difftool
[diff]
    tool = gvimdiff
[difftool]
    prompt = false
[difftool "gvimdiff"]
    path = "C:/Program Files (x86)/Vim/vim81/gvim.exe"

样品运行...

c:\>git d index.html

我还发现我在_vimrc中为diffexpr定义了一个函数,需要像这样注释掉...

"set diffexpr=MyDiff()

...允许“新”内置差异在gVim中工作。通过这些更改,一切都可以在gui vim中工作。