Ich habe dieses seltsame Problem mit der Verwendung vi
als Editor für git commit -a
.
Normaler Ablauf ist: Ich gebe ein git commit -a
, vi
erscheint, ich gebe meine Festschreibungsnachricht ein und dann :wq
speichern und beenden vi
.
Das funktioniert gut. Aber manchmal mache ich einen Tippfehler und anstelle von :wq
Typ I :Wq
(weil ich die Verschiebung für verwenden :
). Wenn ich mich dann korrigiere und :wq
erneut git
eingebe, wird der folgende Fehler ausgegeben:
error: There was a problem with the editor 'vi'.
Please supply the message using either -m or -F option.
Wie kann ich das beheben?
mountain-lion
terminal
git
vi
houbysoft
quelle
quelle
git
undvi
? Ich kann dies nicht mit Vim 7.3, Git-Version 1.7.11.1 wiederholen.7.3
und git1.7.9.6 (Apple Git-31.1)
, die Standard auf Mountain Lion afaikAntworten:
vi
existiert mit einem Nicht-Null-Status, obwohl es ohne zusätzliche Details zu Ihrem Setup schwierig ist zu sagen, warum. Wenn Sie viele Plugins für verwendenvim
, können Sie versuchen, Ihre.vimrc
Datei nach zu verschieben.vimrc.back
und zu prüfen, ob Sie replizieren können. Es gibt einige Quellen , die dieses Problem behandeln, darunter mindestens eine mit einer möglichen Lösung:Ich würde jedoch versuchen, Ihre
.vimrc
erste zu entfernen . Es scheint mehr Bestürzung zu verursachen.quelle
git config --global core.editor /usr/bin/vim
behoben.Wie hier beantwortet: /programming/22699614/git-commit-messages-lost-by-vi
Die wirkliche Lösung ist zu
Laut vim Dokumentation -
-f option should be used when Vim is executed by a program that will wait for the edit session to finish
quelle
:W
dass git Ihre Festschreibungsnachricht schlägt und ablehnt, wenn Sie sie anschließend speichern.vim
Aufruf und dem von ihnen verwendeten Hack verstehen .Benutzt du die Golang Vim Plugins? Diese Zeile verursacht für mich das Problem mit dem vi-Exit-Wert:
filetype plugin indent off
Das
.vimrc
Problem wurde behoben, indem der gesamte Golang-Plugin-Block entfernt wurde . Das Installieren des Golang-Plugins mit fugitive kann so einfach sein wie:ln -s $GOROOT/misc/vim ~/.vim/bundle/vim-golang
(Ich habe gerade das Problem in dieser Ausgabe auf dem Vim-Golang Github dokumentiert. )
quelle
Irgendwas stimmt nicht mit der Git-Konfiguration, denke ich.
Die Lösung besteht also darin, die Git-Konfiguration zurückzusetzen, und es hat bei mir funktioniert:
$(which vim)
ist flexibler als/usr/bin/vim
(vim executable ist möglicherweise für manche Leute nicht verfügbar)quelle