エラー:gitで使用するときにエディター 'vi'に問題がありました


12

viのエディターとして使用すると、この奇妙な問題が発生しgit commit -aます。

通常のフローは次のとおりです。入力しgit commit -avi表示され、コミットメッセージを入力してから、:wqを保存して終了しviます。

これは正常に機能します。ただし、タイプミスをして、タイプする代わり:wqにタイプする:Wqこともあります(シフトをに使用しているため:)。次に、自分で修正して:wq再度入力するとgit、次のエラーが表示されます。

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

どうすれば修正できますか?


何のバージョンgitvi?vim 7.3、gitバージョン1.7.11.1ではこれを再現できません。
クリストファー

@Christopher:vi 7.3とgit 1.7.9.6 (Apple Git-31.1)、Mountain Lion afaikのデフォルト
-houbysoft

回答:


14

viゼロ以外のステータスで存在しますが、セットアップに関する追加の詳細なしでは、理由を特定することは困難です。に多くのプラグインを使用している場合vim.vimrcファイルをに移動して、.vimrc.back複製できるかどうか確認してください。潜在的な解決策を含む少なくとも1つを含む、この問題議論するいくつかのソースがあります

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

.vimrcただし、最初に削除してみます。それはより多くの驚きを引き起こすようです。


5
ありがとう、git config --global core.editor /usr/bin/vimそれを修正しました。
houbysoft

1
@applOObのソリューションは、このようなハックではないため、より優れています。
jefflunt 16

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が拒否するという問題も修正されます。
ライアンム14年

実際に解決策であり、いくつかの不完全な回避策ではない解決策!受け入れられた答えを読んだ人々が、彼らの通常のvim呼び出しと彼らが使っているハックの違いを理解することを本当に願っています。
jefflunt 16

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実行可能ファイルは一部の人には存在しないかもしれません)

弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.