更新janus vim发行版后,使用vim进行提交消息似乎存在问题.最好的例子是做一个git pull让别人改变的时候.显示vim编辑器,我输入我的提交消息,我输入:wq但不是提交工作,我收到以下错误消息:
error: There was a problem with the editor 'vi'.
Not committing merge; use 'git commit' to complete the merge.
Run Code Online (Sandbox Code Playgroud)
然后我必须手动提交:(
我如何让git与vim很好地玩?
Nat*_*yer 96
经过一些谷歌搜索,结果是答案是运行以下:
git config --global core.editor $(which vim)
Run Code Online (Sandbox Code Playgroud)
Bru*_*sky 11
Nat Ritmeyer给出了正确的解决方案.我会告诉你原因.
正如史蒂夫·托克所解释的那样,隐藏你的~/.vimrc或明确告诉git使用完整的路径来vim解决问题.然而,他最后说"我仍然想找到问题的根源".
试试这个:
git commit让自己进入vim编辑器.<CTRL> + Z停止进程并退回到TTY做一个ps并注意你的TTY(你用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
Run Code Online (Sandbox Code Playgroud)回到你的vim流程fg %1(或者你曾经git commit列出的作业号码).
shell输出告诉我们的是......
bash调用git并git调用vivi是/usr/bin/vivi命令是一个符号链接vim<CTRL> + Z停止了git commit命令,它在作业堆栈中排名第一.那么,vi和vim是一样的命令吗?!?!是的,但vim注意到它argv[0]是vi并且以兼容模式运行.这可能会导致问题,具体取决于你的内容.vimrc.
将最好的解决办法是告诉git的使用vim,但我建议你不要以为你的VIM路径是一样的,每个人都别人的(也许你通过安装brew install vim)
git config --global core.editor $(which vim)
Run Code Online (Sandbox Code Playgroud)
这可能是您的 .vimrc 文件中的插件或其他内容。在安全模式下加载 vim 以编辑提交消息的最佳方法是使用:
git config --global core.editor '/usr/bin/vim -f -u NONE'
Run Code Online (Sandbox Code Playgroud)