Ich habe dieses seltsame Problem mit der Verwendung vi
als Editor für git commit -a
.
Der normale Ablauf ist: Ich tippe git commit -a
, vi
erscheint, ich gebe meine Commit-Nachricht ein und dann :wq
zum Speichern und Beenden von vi
.
Das funktioniert gut. Manchmal mache ich jedoch einen Tippfehler und tippe stattdessen (weil :wq
ich :Wq
die Verschiebung für verwende :
). Wenn ich mich dann korrigiere und :wq
erneut git
tippe, kommt folgender Fehler:
error: There was a problem with the editor 'vi'.
Please supply the message using either -m or -F option.
Wie kann ich das beheben?
vi
ist mit einem Nicht-Null-Status vorhanden, obwohl es ohne zusätzliche Details zu Ihrem Setup schwierig zu sagen ist, warum. Wenn Sie viele Plugins für verwenden vim
, können Sie versuchen, Ihre .vimrc
Datei nach zu verschieben .vimrc.back
und zu sehen, ob Sie sie replizieren können. Es gibt einige Quellen , die dieses Problem diskutieren, darunter mindestens eine mit einer möglichen Lösung:
git config --global core.editor /usr/bin/vim
Ich würde jedoch zuerst versuchen, Ihren zu entfernen .vimrc
. Es scheint für mehr Bestürzung zu sorgen.
git config --global core.editor /usr/bin/vim
behoben.Wie hier beantwortet: https://stackoverflow.com/questions/22699614/git-commit-messages-lost-by-vi
Die wirkliche Lösung ist
git config --global core.editor vim -f
Laut vim-Dokumentation --f option should be used when Vim is executed by a program that will wait for the edit session to finish
:W
dass Git Ihre Commit-Nachricht trifft und zurückweist, wenn Sie sie anschließend speichern.vim
Aufruf und dem von ihnen verwendeten Hack verstehen.git config --global core.editor 'vim -f'
, andernfalls -f
wird es nicht eingeschlossen.Verwenden Sie die Golang-Vim-Plugins? Diese Zeile verursacht bei mir das Problem mit dem vi-Ausgangswert:filetype plugin indent off
Das Entfernen des gesamten Golang-Plugin-Blocks in behebt .vimrc
das Problem. Die Installation des Golang-Plugins mit Flüchtling kann so einfach sein wie:ln -s $GOROOT/misc/vim ~/.vim/bundle/vim-golang
(Ich habe das Problem gerade in dieser Ausgabe auf dem vim-golang-Github dokumentiert. )
Irgendetwas stimmt mit der Git-Konfiguration nicht, denke ich.
Die Lösung besteht also darin, die Git-Konfiguration zurückzusetzen, und es hat bei mir funktioniert:
git config --global core.editor $(which vim)
$(which vim)
ist flexibler als /usr/bin/vim
(die ausführbare vim-Datei ist für einige Leute möglicherweise nicht vorhanden)
Christoph
git
undvi
? Ich kann dies nicht mit vim 7.3, Git-Version 1.7.11.1 reproduzieren.houbysoft
7.3
und git1.7.9.6 (Apple Git-31.1)
, die Standardeinstellungen auf Mountain Lion afaik