我在工作笔记本电脑(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:vim
vimdiff
$ echo $EDITOR
vim
$ git config --get core.editor
vim
(最初,我没有在 Git 中明确设置它,而只是在环境变量中设置了它,但仍然遇到同样的问题。)
看来我在 Cygwin 中运行 Windows Git。由于我是 Cygwin 的新手,所以第一次问这个问题时并没有意识到这一点。我知道这可能会导致问题,但经过一番尝试后,我仍无法修复它。
有人见过这个问题吗?有办法解决吗?
答案1
感谢 @skarface,我已解决了提交方面的问题。首先,正如我在编辑问题时提到的,事实证明我没有在 Cygwin 中运行 Cygwin Git,而是实际运行 Windows Git。因此,集成问题是有道理的:它没有找到vim
或vimdiff
。
我必须做:
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
现在一切顺利。