更新janus vim发行版后,使用vim进行提交消息似乎存在问题。最好的例子就是做git pull
来获取别人的变化。显示vim编辑器,我输入我的提交消息,我输入: w q 但不是提交工作,我得到以下错误消息:
error: There was a problem with the editor 'vi'.
Not committing merge; use 'git commit' to complete the merge.
然后我必须手动提交:(
如何让git与vim很好地配合?
答案 0 :(得分:92)
经过一段谷歌搜索后,结果是答案是运行以下内容:
git config --global core.editor $(which vim)
答案 1 :(得分:10)
Nat Ritmeyer已经给出了right solution。我会告诉你原因。
作为Steve Tooke explained,隐藏您的lo
或明确告诉~/.vimrc
使用git
的完整路径来解决问题。然而,他以&#34结束;我仍然想找到问题的根源" 。
试试这个:
vim
让自己进入git commit
编辑。vim
停止进程并退回到TTY 执行<CTRL> + Z
并注意您的TTY(使用ps
命令获得的号码)有类似的内容......
tty
使用$ tty
/dev/ttys005
$ ps
PID TTY TIME CMD
17547 ttys005 0:00.15 -bash
65126 ttys005 0:00.02 git commit
65127 ttys005 0:00.10 vi .git/COMMIT_EDITMSG
$ which vi
/usr/bin/vi
$ ll /usr/bin/vi
lrwxr-xr-x 1 root wheel 3 Oct 3 17:40 /usr/bin/vi -> vim
$ jobs
[1]+ Stopped git commit
(或者列出的fg %1
列出的作业编号停止)回到您的vim流程。
shell输出告诉我们的是......
git commit
的{{1}}和名为bash
的{{1}} git
的完整路径为git
vi
命令是vi
/usr/bin/vi
停止了vi
命令,它在作业堆栈中排名第一。那么, vi与vim的命令相同?!?!是的,但是vim
注意到它的<CTRL> + Z
是git commit
并在{{}中运行3}}。这可能会导致问题,具体取决于vim
。
最佳解决方案是告诉git使用vim,但我建议你不要假设你的vim路径与所有人一样(也许您是通过argv[0]
)
vi
答案 2 :(得分:4)
这可能是.vimrc文件中的插件或其他内容。在安全模式下加载vim以编辑提交消息的最佳方法是使用:
git config --global core.editor '/usr/bin/vim -f -u NONE'
答案 3 :(得分:2)
每次从远程仓库获取并将其与另一个分支合并时,我都遇到了同样的问题。
在终端输入此内容为我修复了
git config --global core.editor $(which vim)
答案 4 :(得分:0)
如果出于某种原因,git config --global core.editor /usr/bin/vim
无法正常工作,请尝试不使用--global
标记。我可以让它只在没有--global
标志的情况下工作。