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
被叫又叫git
git
vi
- 的完整路径
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)