E97 表示 Vimdiff 无法在 Git Bash 中工作:无法创建差异

ato*_*oms 2 git vim vimdiff git-bash

事物的版本:

  • 操作系统:Win 8.1
  • 维姆: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
Run Code Online (Sandbox Code Playgroud)

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

/usr/share/vim/vim81/
Run Code Online (Sandbox Code Playgroud)

但exes(vimdiff.exe,vim.exe等)在

/usr/bin/
Run Code Online (Sandbox Code Playgroud)

如果我跑

$ which -a vimdiff
Run Code Online (Sandbox Code Playgroud)

它返回

/usr/bin/vimdiff
/bin/vimdiff
/usr/bin/vimdiff
Run Code Online (Sandbox Code Playgroud)

这是来自全新安装的 Git。

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

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

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

小智 5

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

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

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

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