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

问题描述 投票:0回答:2

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

git vim git-diff vimdiff
2个回答
5
投票

在 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()

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


5
投票

好的,我找到了答案。为了正常工作,gvim 必须留在前台,而不是像往常一样 fork 一个新进程。这是通过在启动 gvim(或 gvimdiff)时使用

-f
--nofork
标志来完成的。

我现在已经设置了以下有效的别名:

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

请小心注意单引号和双引号的位置,以保证 zsh shell 满意。

我使用 gvim 选项

-geometry
将 diff 窗口配置为 220 行 x 80 列。 “+2000+40”表示窗口的左上角与所有显示器的左上角水平偏移 2000 像素,垂直偏移 80 像素,因此该窗口出现在我的 2 显示器设置的右侧显示器上。尝试将其设置为
-geometry 160x40+60+20
以查看更改的效果。

© www.soinside.com 2019 - 2024. All rights reserved.