Fehler: Beim Verwenden des Editors 'vi' mit git ist ein Problem aufgetreten

12

Ich habe dieses seltsame Problem mit der Verwendung vials Editor für git commit -a.

Normaler Ablauf ist: Ich gebe ein git commit -a, vierscheint, ich gebe meine Festschreibungsnachricht ein und dann :wqspeichern und beenden vi.

Das funktioniert gut. Aber manchmal mache ich einen Tippfehler und anstelle von :wqTyp I :Wq(weil ich die Verschiebung für verwenden :). Wenn ich mich dann korrigiere und :wqerneut giteingebe, 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?

houbysoft
quelle
Welche Version von gitund vi? Ich kann dies nicht mit Vim 7.3, Git-Version 1.7.11.1 wiederholen.
Christopher
@ Christopher: vi 7.3und git 1.7.9.6 (Apple Git-31.1), die Standard auf Mountain Lion afaik
houbysoft

Antworten:

14

viexistiert 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 verwenden vim, können Sie versuchen, Ihre .vimrcDatei nach zu verschieben .vimrc.backund 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:

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

Ich würde jedoch versuchen, Ihre .vimrcerste zu entfernen . Es scheint mehr Bestürzung zu verursachen.

Christopher
quelle
5
Danke, habe es git config --global core.editor /usr/bin/vimbehoben.
Houbysoft
1
Die Lösung von @ applOOb ist besser, da es sich nicht um einen solchen Hack handelt.
Jefflunt
14

Wie hier beantwortet: /programming/22699614/git-commit-messages-lost-by-vi

Die wirkliche Lösung ist zu

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

applOOb
quelle
2
Endlich ... das ist die richtige Lösung. Es behebt auch das Problem, :Wdass git Ihre Festschreibungsnachricht schlägt und ablehnt, wenn Sie sie anschließend speichern.
Ryanmt
Eine Lösung, die eigentlich eine Lösung ist und keine lahme Lösung! Ich hoffe wirklich, dass Leute, die die akzeptierte Antwort lesen, den Unterschied zwischen ihrem normalen vimAufruf und dem von ihnen verwendeten Hack verstehen .
Jefflunt
1

Benutzt du die Golang Vim Plugins? Diese Zeile verursacht für mich das Problem mit dem vi-Exit-Wert: filetype plugin indent off

Das .vimrcProblem 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. )

Jan
quelle
0

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:

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

$(which vim)ist flexibler als /usr/bin/vim(vim executable ist möglicherweise für manche Leute nicht verfügbar)

Ericn
quelle