【问题标题】:Vimdiff is not working in Git Bash, says E97: Cannot create diffsVimdiff 在 Git Bash 中不起作用,E97 说:无法创建差异
【发布时间】:2018-08-24 04:30:22
【问题描述】:

事物的版本:

  • 操作系统:Win 8.1
  • Vim:8.1
  • Git:2.18.0.windows.1
  • GNU bash:4.4.19(2)

我正在尝试在 Git Bash 中使用 vimdiff,但我得到 E97:Cannot create diffs 错误。从那里开始,两个文件彼此相邻打开,但没有针对差异的语法帮助。一旦我退出这两个文件并返回 bash 终端,我就会看到:

/usr/bin/bash: /usr/share/vim/vim81diff: No such file or directory

在我看来,Git Bash 正在寻找 diff 程序的错误位置。但它仍然将文件传递给 vim,所以我不确定。 Git Bash 带来了自己的 vim 副本,所有支持文件都在其中

/usr/share/vim/vim81/

但是exe(vimdiff.exe、vim.exe等)在

/usr/bin/

如果我跑

$ which -a vimdiff

返回

/usr/bin/vimdiff
/bin/vimdiff
/usr/bin/vimdiff

这是来自全新安装的 Git。

我使用了 Git Bash 文件夹中 vimdiff 的完整路径。我还创建了两个测试文件并在 /usr/bin/ 目录中对它们运行 vimdiff 并得到相同的结果。

如果我通过转到 cmd 并转到同一目录并在同一文件上使用它们来使用本地安装的 vim,它会按预期工作。这只是发生在 Git Bash 中。我想将 vimdiff 设置为我的 git difftool 但需要让 vimdiff 正常工作。

知道是什么原因造成的以及如何解决它吗?

【问题讨论】:

  • diff.tool 的设置是什么? (stackoverflow.com/a/17541084/6309)
  • @VonC 目前 vimdiff。当使用任何默认值时,它确实有效,但我不知道 Git Bash 的默认 diff.tool 是什么。当我使用 vimdiff 作为 diff.tool 时,我得到的结果与上面详述的相同。需要明确的是,现在我只是想让“vimdiff file1.txt file2.txt”在 Git Bash 中正常工作。 Git 尚未在这些测试中发挥作用。一旦成功,我将继续将其设置为 git 的差异和合并工具。谢谢

标签: git vim git-bash vimdiff


【解决方案1】:

确实,系统正在寻找 diff 程序不在的地方。 我遇到了同样的问题,并通过在 vim 期望的位置创建指向 diff 工具的链接来解决它。

  • 在 git bash 中,转到 /usr/share/vim
  • 创建链接:ln -s /usr/bin/diff vim81diff

在我的 ~/_vimrc 文件中,有一个 MyDiff() 函数,它期望 diff 可执行文件由 $VIMEXECUTUABLE 组成,后缀为 diff,导致 vim81diff,在我的 git bash 安装中不存在.

我不知道这个问题是否重要,但我在 Windows 10 上有一个单独的 vim 8.1 安装,它使用相同的 _vimrc。

【讨论】:

  • ln -s /usr/bin/diff vimXXdiff,其中 XX 是 Vim 的版本
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2019-06-20
  • 2014-08-05
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多