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
回到您的 vim 进程fg %1(或您git commit列出的曾经停止的作业编号)。
shell 输出告诉我们的是……
- 我正在使用 ttys005
- 在 TTY上
bash被叫又叫gitgitvi
- 的完整路径
vi是/usr/bin/vi
- 该
vi命令是一个符号链接vim
- 调用
<CTRL> + Z停止了git commit命令,它在作业堆栈中是#1。
所以,vi 和 vim 是同一个命令?!?!是的,但vim注意到它argv[0]曾经vi并以兼容模式运行。这可能会导致问题,具体取决于您的.vimrc.
最好的解决方案是告诉 git 使用 vim,但我建议你不要假设你的 vim 路径和其他人一样(也许你是通过 安装的brew install vim)
git config --global core.editor $(which vim)