错误:与git一起使用时,编辑器'vi'存在问题


12

使用vi作为的编辑器时,我遇到了一个奇怪的问题git commit -a

正常流程是:输入git commit -avi出现,输入我的提交消息,然后:wq从保存并退出vi

这很好。但是,有时我会打错字,而不是:wq键入:Wq(因为我将shift用于:)。然后,当我纠正自己并:wq再次键入时,git出现以下错误:

error: There was a problem with the editor 'vi'.
Please supply the message using either -m or -F option.

我怎样才能解决这个问题?


什么版本gitvi?我无法使用git版本1.7.11.1的vim 7.3对此进行复制。
Christopher

@Christopher:vi 7.3和git 1.7.9.6 (Apple Git-31.1),是Mountain Lion afaik上的默认值
houbysoft 2012年

Answers:


14

vi的状态为非零,尽管没有关于设置的其他详细信息,但很难说出原因。如果您使用大量的插件vim,则可以尝试将.vimrc文件移至.vimrc.back并查看是否可以复制。这里有几个来源讨论这个问题,包括至少一个具有潜在的解决方案:

git config --global core.editor /usr/bin/vim

不过,我会尝试删除您的.vimrc第一个。它似乎引起更多的惊慌。


5
谢谢,git config --global core.editor /usr/bin/vim修复它。
houbysoft

1
@applOOb的解决方案更好,因为它不是这种黑客。
jefflunt

15

如此处回答:https//stackoverflow.com/questions/22699614/git-commit-messages-lost-by-vi

真正的解决方案是

git config --global core.editor vim -f

根据vim文档- -f option should be used when Vim is executed by a program that will wait for the edit session to finish


3
最后...这是正确的解决方案。它还解决了:W随后保存它时击中并让git拒绝提交消息的问题。
Ryanmt 2014年

一个解决方案实际上是一个解决方案,而不是一些la脚的解决方法!我真的希望阅读已接受答案的人们了解他们的正常vim调用与所使用的骇客之间的区别。
jefflunt

1

您是否使用golang vim插件?此行对我来说导致vi退出值问题: filetype plugin indent off

删除整个golang插件块可解决.vimrc此问题。使用逃犯安装golang插件可以很容易:ln -s $GOROOT/misc/vim ~/.vim/bundle/vim-golang

(我刚刚在vim-golang github上记录了本期中的问题


0

我猜Git配置出了点问题。

所以解决方案是重置Git配置,它对我有用:

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

$(which vim)/usr/bin/vim(某些人可能没有vim可执行文件)更灵活

By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.