更新janus后使用vim进行git提交消息

Nat*_*yer 48 git macos vim

更新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)

  • [相关阅读takey.co.uk/there-was-a-problem-with-the-editor-vi-git-on-mac-os-x/](http://tooky.co.uk/there-was -a-问题与-的编辑器-VI-的git-ON-MAC-OS-X /) (2认同)

Bru*_*sky 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
    
    Run Code Online (Sandbox Code Playgroud)
  4. 回到你的vim流程fg %1(或者你曾经git commit列出的作业号码).

shell输出告诉我们的是......

  1. 我当时正在使用ttys005
  2. 在TTY上bash调用gitgit调用vi
  3. 完整的道路vi/usr/bin/vi
  4. vi命令是一个符号链接vim
  5. 调用<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)


Mr *_*lde 5

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

git config --global core.editor '/usr/bin/vim -f -u NONE'
Run Code Online (Sandbox Code Playgroud)