【问题标题】:How can I make git difftool to use gvim (gvimdiff)?如何让 git difftool 使用 gvim (gvimdiff)?
【发布时间】:2014-12-20 16:50:19
【问题描述】:

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

【问题讨论】:

  • 我们需要您的实际 git 配置来提供帮助。此外,当您推测“git 的变化”时,提及 Git 版本是有道理的,对吧?!

标签: git vim git-diff vimdiff


【解决方案1】:

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

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

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

请注意单引号和双引号的位置,以保持 zsh shell 正常运行。

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

【讨论】:

  • 如果你愿意,你也可以用“gvimdiff”代替“gvim -d”。
  • 在 Windows Server 2012R2 上,我能够使用 git difftool --no-prompt --extcmd="'C:\Program Files (x86)\Vim\vim81\gvim' -d -f" 以上将我带到我需要的地方。谢谢。
【解决方案2】:

在 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 中运行。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-04-14
    • 1970-01-01
    • 2015-09-20
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多