Git 无法在 Cygwin 中启动 Vim

Git 无法在 Cygwin 中启动 Vim

我在工作笔记本电脑(Windows 7)上的 Powershell 环境中使用 Git 与 Vim 协同工作。当我提交或使用我的git vimdiff别名时,它会弹出 Vim。

我曾尝试在 Cygwin 下进行相同的设置(我本质上是一个 Unix 爱好者),但当我输入git commit或时git vimdiff,Vim 不会弹出;不过,Git 似乎在等待 Vim,因为操作直到我Ctrl-才会完成C(之后需要一分钟左右才能恢复)。我可以使用内联提交消息( )进行提交,并且我可以使用和git commit -m "I would rather type this in Vim"从终端启动 Vim/Vimdiff 。我在多个地方将编辑器设置为 Vim:vimvimdiff

$ echo $EDITOR
vim
$ git config --get core.editor
vim

(最初,我没有在 Git 中明确设置它,而只是在环境变量中设置了它,但仍然遇到同样的问题。)

看来我在 Cygwin 中运行 Windows Git。由于我是 Cygwin 的新手,所以第一次问这个问题时并没有意识到这一点。我知道这可能会导致问题,但经过一番尝试后,我仍无法修复它。

有人见过这个问题吗?有办法解决吗?

答案1

感谢 @skarface,我已解决了提交方面的问题。首先,正如我在编辑问题时提到的,事实证明我没有在 Cygwin 中运行 Cygwin Git,而是实际运行 Windows Git。因此,集成问题是有道理的:它没有找到vimvimdiff

我必须做:

git config --global core.editor C:/cygwin/bin/vim.exe

我不确定上述方法为什么有效,因为:

$ which vim
/usr/bin/vim

但:

$ ls C:/cygwin/usr/bin
ls: cannot access C:/cygwin/usr/bin: No such file or directory

因此不确定为什么这条路径可行,但事实确实如此。


现在,我也解决了差异问题。我必须:

$ git config --global diff.tool vimdiff
$ git config --global difftool.vimdiff.cmd  'C:/cygwin/bin/vim.exe -d "$LOCAL" "$REMOTE"'

这样我就可以用 Git 启动 Vimdiff 了,但还是有些问题。我可以查看文件,但工具本身无法进行 diff ,并出现以下错误:

差异错误

看起来这里发生的事情是 Git 以某种方式搞砸了 Vim 的shell选项。在我的 中.vimrc,我输入了以下命令:

set shell=bash

现在一切顺利。

相关内容