51

更新 janus vim 发行版后,使用 vim 提交消息似乎存在问题。最好的例子是在执行 agit pull以获取其他人的更改时。显示 vim 编辑器,我输入我的提交消息,我输入,:wq但我收到以下错误消息,而不是提交工作:

error: There was a problem with the editor 'vi'.
Not committing merge; use 'git commit' to complete the merge.

然后我必须手动提交:(

如何让 git 与 vim 很好地配合使用?

4

5 回答 5

100

经过一番谷歌搜索,事实证明答案是运行以​​下命令:

git config --global core.editor $(which vim)
于 2013-01-30T15:29:19.877 回答
11

Nat Ritmeyer 给出了正确的解决方案。我会给你原因。

正如史蒂夫图克解释的那样,隐藏您~/.vimrc或明确告诉git使用完整路径来vim解决问题。然而,他以“我仍然想找到问题的根源”作为结尾。

试试这个:

  1. 开始git commit让自己成为一名vim编辑。
  2. 点击<CTRL> + Z停止进程并返回 TTY
  3. 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
    
  4. 回到您的 vim 进程fg %1(或您git commit列出的曾经停止的作业编号)。

shell 输出告诉我们的是……

  1. 我正在使用 ttys005
  2. 在 TTY上bash被叫又叫gitgitvi
  3. 的完整路径vi/usr/bin/vi
  4. vi命令是一个符号链接vim
  5. 调用<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)
于 2016-10-10T20:34:30.360 回答
5

这可能是您的 .vimrc 文件中的插件或其他内容。以安全模式加载 vim 以编辑提交消息的最佳方法是使用:

git config --global core.editor '/usr/bin/vim -f -u NONE'
于 2014-12-03T22:33:59.123 回答
2

每次从远程仓库获取并将其与另一个分支合并时,我都会遇到同样的问题。

在终端中输入它为我修复了它

git config --global core.editor $(which vim)

于 2016-07-07T05:53:12.743 回答
0

如果由于某种原因git config --global core.editor /usr/bin/vim不起作用,请尝试不使用--global标志。--global我只能在没有标志的情况下让它工作。

于 2016-09-22T09:07:42.683 回答