Editor konnte nicht ausgeführt werden

153

Ich muss nicht oft mehrere Festschreibungsnachrichten ändern, aber es ist ein- oder zweimal passiert und ich kann mich nicht erinnern, dies jemals gesehen zu haben. Ich hoffe jemand anderes hat. Wenn ich git rebase -i HEAD~7, wird die erwartete Liste in vi genau wie erwartet geöffnet. Ich ändere die pickWerte editgegebenenfalls auf und dann :wq.

Editor konnte nicht ausgeführt werden

Die core.editorEinstellung in meinem globalen .gitconfigist vi(ich habe es auch vimin einem wild verzweifelten Zug geändert ). Ich habe es versucht mate, aber das hat die ursprüngliche Liste nicht richtig geöffnet, also habe ich sie wieder geändert.

Ich verwende v1.7.3 und würde mich über Vorschläge freuen.

Rob Wilkerson
quelle
1
Die Quelle enthält git_editor "$TODO" || die_abort "Could not execute editor". Da Sie sagen, dass der Editor tatsächlich aufgerufen wird, bedeutet dies, dass er einen Exit-Code ungleich Null zurückgibt. Können Sie dieses Verhalten mithilfe der normalen Befehlszeile replizieren?
Cascabel
Was für mich seltsam ist, ist, dass vi gestartet wird, um die Liste der Commits anzuzeigen, aber wenn ich speichere und schließe, stirbt alles einfach. Siehe meine Antwort für die Änderung, die ich vorgenommen habe, damit es auf magische Weise funktioniert.
Rob Wilkerson
Welches Betriebssystem haben Sie ausgeführt? Unter OSX Lion hatte ich die gleichen Probleme und Ihre Antwort hat es behoben. +1
Adam Lewis
@AdamLewis - Ich kann mich jetzt nicht sicher sein, aber wahrscheinlich 10.6 oder .7 angesichts des Datums. OSX sicher.
Rob Wilkerson
5
Ich glaube, ich habe dieses Problem verursacht, als ich Homebrew verwendet habe, um ein neues Vim zu installieren. Die Einstellung hat git config --global core.editor "/usr/local/bin/vim"es für mich behoben.
mmell

Antworten:

185

Gestern war nur einer dieser Tage. Aus Spaß habe ich beschlossen, den vollständigen Pfad auf vi (z. B. /usr/bin/vi) und nicht nur auf die ausführbare Datei festzulegen. Jetzt funktioniert alles. Ich muss zugeben, dass ich es nicht verstehe, da vies für sich genommen perfekt ausführbar ist (meine $EDITORenv-Variable ist ebenfalls auf gesetzt vi), aber es funktioniert und mein technisches Karma war in letzter Zeit nicht so groß, also sollte ich vielleicht einfach nicht hinterfragen Die Gottheiten werden ...

Rob Wilkerson
quelle
6
Wo haben Sie den vollständigen Pfad zu / usr / bin / vi festgelegt?
Amala
131
Ich habe es in meine globale Konfigurationsdatei eingefügt : git config --global core.editor "/usr/bin/vim".
Rob Wilkerson
Ich hatte das gleiche Problem. Aus Gründen, die ich nicht verstehen kann, wurde meine core.editor-Einstellung auf / user / bin / vim anstatt auf / usr / bin / vim gesetzt
jonnybot
Hatte das gleiche Problem, aber mit Sublime Text - der vollständige Pfad löste endlich die Dinge. Was seltsam war, weil ich sicher bin, dass vorher sowieso alles gut funktioniert hat ...: - \
Hal
git config --global color.editor "/usr/local/bin/vim"hat für mich gearbeitet :), danke
przbadu
159

Der folgende Befehl

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

behebt es.

[bearbeiten]

Jetzt sehe ich, dass jemand es bereits in den Kommentaren gepostet hat. Hoffe, es ist immer noch hilfreich für einige Blinde wie mich.

Langusten Gustel
quelle
6
Für Windows zum Beispiel (fehlende einfache Anführungszeichen waren mein Problem): git config --global core.editor "'C: \ Programme (x86) \ Vim \ vim74 \ vim.exe'"
chrjs
1
Ja, das ^. Um dies zu verdeutlichen, verwenden Sie doppelte Anführungszeichen um einfache Anführungszeichen um den Pfad zur ausführbaren Datei.
Jacob
Klappt wunderbar!
R11G
7

Anders als bei den anderen Antworten hier bisher, benutze ich den absoluten Pfad zu vi und setze den Git core.editor nicht ausreichend, Konfiguration festzulegen, um das Problem zu lösen. (Die waren bereits vorhanden.)

In meiner Situation wurde das Problem durch Hinzufügen des -fFlags zum Befehl vi gelöst :

git config --global core.editor '/usr/bin/vi -f'

Sobald diese -fOption vorhanden ist, kann ich verwendengit rebase -i aktiviert . Wenn ich die Festschreibungsliste speichere und beende, wird die Rebase wie gewünscht fortgesetzt, anstatt den Fehler "Editor konnte nicht ausgeführt werden" anzuzeigen.

Die vim-Manpage sagt in Bezug auf die Option -f:

Bei der GUI-Version wird Vim nicht von der Shell, in der es gestartet wurde, getrennt und getrennt. ... Diese Option sollte verwendet werden, wenn Vim von einem Programm ausgeführt wird, das auf den Abschluss der Bearbeitungssitzung wartet (z. B. Mail).

Nun, ich verwende keine mir bekannte GUI-Version. Ich verwende gitdie Bash-Befehlszeile in einem Terminalfenster unter masOS Sierra 10.12.6. Da jedoch git rebase -iauf den Abschluss der Bearbeitungssitzung gewartet wird, ist die -fOption hier vermutlich erforderlich. Vielleicht -fversucht vim (ohne ) aus irgendeinem Grund, den ich nicht herausfinden konnte, sich von der Schale zu lösen.

LarsH
quelle
6

Ich hatte dieses Problem und es wurde durch einen Teil des vcscommand-Plugins für vim verursacht. Das Starten von vim mit einem dieser Befehle führte zu Exit-Code 1 ("Fehler"):

  • vi
  • vim

Aber diese gaben mir den Exit-Code 0 ("Erfolg"):

  • /usr/bin/vi
  • /usr/bin/vim
  • vi -u NONE
  • vim -u NONE

Ich konnte es bis zum spezifischen Plugin zurückverfolgen, indem ich es deaktivierte ~/.vimrcund Dateien einfügte, indem ich ~/.vimsie umbenannte und ausführte vi -c q ; echo $?, um vim schnell auszuführen und den Exit-Code zu drucken.

Annika Backstrom
quelle
1
Ich hatte das gleiche Problem und das Festlegen des vollständigen Pfads zu vim funktionierte: git config --global core.editor / usr / bin / vim
James
Ein weiterer möglicher Schuldiger scheint das Pathogen-Plugin unter Mac OS X zu sein .
Sschuberth
3

Für mich war es ein Problem mit meiner .vimrc. Durch vorübergehendes Umbenennen dieser Datei wurde das Problem behoben. Anschließend debuggen Sie meine .vimrc. Dies ist sehr ähnlich zu Ignus Erfahrung.

Tonbrücken
quelle
Ja, ich hatte! Silent colorscheme macvim in meiner .vimrc, um das Farbschema auf das zu setzen, wenn es existiert, und mich nicht zu nerven, wenn es nicht existiert (also würde das Kommandozeilen-vim funktionieren). Auf der anderen Seite wurde dadurch der Exit-Status auf 1 geändert, wenn er fehlschlug, selbst wenn er still war!
Max
3

Wenn Sie aus irgendeinem Grund sublime verwenden möchten, können Sie in Ihrer globalen Konfigurationsdatei Folgendes tun:

 git config --global core.editor "/Applications/Sublime\ Text.app/Contents/SharedSupport/bin/subl"
alphapilgrim
quelle
1

Ich habe nur eine Weile gebraucht, um mein Problem in einem meiner Plugins aufzuspüren.

(Insbesondere war es https://github.com/ervandew/supertab )

Ich denke, das ist der Nachteil bei der automatischen Aktualisierung aller meiner Plugins.

Deaktivieren Sie also die Hälfte Ihrer vimrc und Plugins. Wenn das nicht hilft, liegt das Problem bei Ihrer anderen Hälfte.

ignu
quelle
Ich habe das gleiche Problem mit Supertab.
Harithski
Wie haben Sie es bis zum Supertab gefunden? Das wäre wirklich eine hilfreiche Information.
Justin Force
1

Eine andere Möglichkeit ist die Verwendung des nanoEditors.

$ whereis nano
$ git config --global core.editor path/to/nano

Behebt es.

techkuz
quelle
1

Ich habe versucht, Commits wie hier gezeigt zu quetschen: https://www.youtube.com/watch?v=V5KrD7CmO4o . Mein Git-Editor (Notepad ++) wurde im Rebasing-Schritt geöffnet. Im Schritt "Commit-Nachricht ändern" wurde jedoch das Problem "Editor konnte nicht ausgeführt werden" angezeigt. Es ist wahrscheinlich passiert, weil die Einstellungen des Git-Editors falsch waren und weil ich Notepad ++ an einem nicht standardmäßigen Ort auf meinem Windows-System installiert habe. Das heißt, 'git config core.editor' hat mir gegebennotepad++ -multilnst- nosession .

Geben Sie den vollständigen Pfad wie folgt an, um das Problem zu beheben:

git config --global core.editor "'C:\CustomFolder\NPP\notepad++.exe' -multiInst -notabbar -nosession -noPlugin"

Siehe: https://www.youtube.com/watch?v=YLxdkcT6H4g

MasterJoe2
quelle
0

Sind Sie sicher, dass / usr / bin / vim auf 1.7.3 war? Ich hatte das gleiche Problem, weil ich das Backup-Plugin installiert hatte, das nur in 1.7.3 unterstützt wird, und aus irgendeinem Grund / usr / bin / vim plötzlich auf 1.7.2 herabgestuft wurde, möglicherweise aufgrund eines größeren Updates von XCode. ..

Flov
quelle
0

Ich hatte dieses Problem auch, als ich bereits vim für eine Rebase in einem anderen Terminal geöffnet hatte. Ich hatte den Rebase gestartet, wurde unterbrochen, und als ich zurückkam, versuchte ich es im anderen Terminal erneut von Grund auf, ohne zu bemerken, dass ich mich anderswo mitten im selben Rebase befand. Das Beenden der vim-Rebase-Sitzung im anderen Terminal hat einwandfrei funktioniert.

mmrobins
quelle
0

Seltsamerweise funktionierte es für mich, es noch einmal zu versuchen.

Meine Variablen core.editor und $ EDITOR sind nicht festgelegt.

Eben Geer
quelle
0

Für mich mit Windows: Schließen Sie das aktuelle Terminal und öffnen Sie ein anderes (win + R, geben Sie 'cmd', dann 'enter' ein), dann funktioniert es plötzlich.

miao.wang
quelle
0

VS-Code-Lösung:

git config --global core.editor "/Applications/Visual\ Studio\ Code.app/Contents/MacOS/Electron"

Eugene Balashov
quelle