Nie udało się uruchomić edytora

153

Nie często muszę modyfikować wiele komunikatów o zatwierdzeniach, ale zdarzyło się to raz lub dwa razy i nigdy nie pamiętam, żebym to widział. Mam nadzieję, że ktoś inny. Kiedy ja git rebase -i HEAD~7, oczekiwana lista otwiera się w vi dokładnie tak, jak oczekiwano. Zmieniam pickwartości na editodpowiednie, a następnie :wq.

Nie udało się uruchomić edytora

core.editorUstawienie w moim globalny .gitconfigjest vi(ja też zmienić go vimw szalenie desperackim ruchu). Próbowałem użyć mate, ale to nawet nie otworzyło poprawnie początkowej listy, więc zmieniłem ją z powrotem.

Używam wersji 1.7.3 i mile widziane są wszelkie sugestie.

Rob Wilkerson
źródło
1
Źródło zawiera git_editor "$TODO" || die_abort "Could not execute editor". Ponieważ mówisz, że edytor faktycznie się pojawia, oznacza to, że zwraca niezerowy kod zakończenia. Czy możesz odtworzyć to zachowanie, używając go normalnie w wierszu poleceń?
Cascabel
Dziwne jest dla mnie to, że uruchamia się vi, aby wyświetlić listę zatwierdzeń, ale kiedy zapisuję i zamykam, wszystko po prostu umiera. Zobacz moją odpowiedź na zmianę, którą wprowadziłem, aby magicznie zaczęła działać.
Rob Wilkerson
Z jakiego systemu operacyjnego korzystałeś? Uruchamianie OSX Lion Miałem ten sam problem i twoja odpowiedź go naprawiła. +1
Adam Lewis
@AdamLewis - Nie jestem teraz pewien, ale prawdopodobnie 10.6 lub .7 biorąc pod uwagę datę. Na pewno OSX.
Rob Wilkerson
5
Myślę, że stworzyłem ten problem, kiedy użyłem homebrew do zainstalowania nowego vima. Ustawienie git config --global core.editor "/usr/local/bin/vim"naprawiło to dla mnie.
mmell

Odpowiedzi:

185

Wczoraj był tylko jeden z tych dni. Na próżno zdecydowałem się ustawić pełną ścieżkę do vi (np. /usr/bin/vi), A nie tylko plik wykonywalny. Teraz wszystko działa. Muszę przyznać, że nie rozumiem, ponieważ sam w sobie vijest doskonale wykonywalny (moja $EDITORzmienna env jest również ustawiona na vi), ale działa, a moja techniczna karma ostatnio nie była tak duża, więc może po prostu nie powinienem kwestionować bóstwa będą ...

Rob Wilkerson
źródło
6
Gdzie ustawiłeś pełną ścieżkę do / usr / bin / vi?
Amala
131
I umieścić go w moim globalnym pliku konfiguracyjnym: git config --global core.editor "/usr/bin/vim".
Rob Wilkerson
Miałem ten sam problem. Ze względów nie mogę pojąć, moje ustawienie core.editor została ustawiona / user / bin / vim zamiast / usr / bin / vim
jonnybot
Miałem ten sam problem, ale z Sublime Text - pełna ścieżka ostatecznie rozwiązała problem. Co było dziwne, ponieważ jestem pewien, że i tak wszystko działało dobrze ...: - \
Hal
git config --global color.editor "/usr/local/bin/vim"pracował dla mnie :), dzięki
przbadu
159

Następujące polecenie

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

naprawia to.

[edytować]

Teraz widzę, że ktoś już to opublikował w komentarzach. Mam nadzieję, że jest to nadal pomocne dla niektórych niewidomych ludzi, takich jak ja.

Langusten Gustel
źródło
6
Na przykład dla systemu Windows (brak pojedynczych cudzysłowów, był mój problem): git config --global core.editor "'C: \ Program Files (x86) \ Vim \ vim74 \ vim.exe'"
chrjs
1
Tak, to ^. Aby to wyjaśnić, użyj podwójnych cudzysłowów wokół pojedynczych cudzysłowów wokół ścieżki do pliku wykonywalnego.
Jacob
Działa jak marzenie!
R11G
7

W przeciwieństwie do innych odpowiedzi tutaj do tej pory, dla mnie użycie bezwzględnej ścieżki do vi i ustawienie core.editorkonfiguracji git nie było wystarczające do rozwiązania problemu. (Te były już na miejscu.)

W mojej sytuacji problem został rozwiązany poprzez dodanie -fflagi do polecenia vi:

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

Gdy ta -fopcja jest już dostępna, mogę użyć git rebase -i, a kiedy zapisuję i zamykam listę zmian, rebase postępuje tak, jak powinno, zamiast wyświetlać błąd „nie można uruchomić edytora”.

Strona podręcznika vim mówi o opcji -f,

W przypadku wersji z GUI, Vim nie będzie forkował i nie odłączał się od powłoki, w której został uruchomiony. ... Ta opcja powinna być używana, gdy Vim jest uruchamiany przez program, który będzie czekał na zakończenie sesji edycji (np. Poczta).

Cóż, nie używam wersji GUI, o której wiem. Uruchamiam gitw wierszu poleceń bash w oknie terminala na masOS Sierra 10.12.6. Ale ponieważ git rebase -iczeka na zakończenie sesji edycji, przypuszczam, że dlatego -fopcja jest tutaj konieczna. Może vim (bez -f) próbuje rozwidlić / odłączyć się od powłoki z jakiegoś powodu, którego nie byłem w stanie zrozumieć.

LarsH
źródło
6

Miałem ten problem i był on spowodowany przez jakąś część wtyczki vcscommand dla vima. Uruchomienie vima z którymkolwiek z tych poleceń spowodowało kod zakończenia 1 („błąd”):

  • vi
  • vim

Ale te dały mi kod zakończenia 0 („sukces”):

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

Udało mi się prześledzić to z powrotem do konkretnej wtyczki, wyłączając ~/.vimrci pliki ~/.vim, zmieniając ich nazwę i uruchamiając, vi -c q ; echo $?aby szybko uruchomić vim i wydrukować kod zakończenia.

Annika Backstrom
źródło
1
Miałem ten sam problem i ustawienie pełnej ścieżki do vima zadziałało: git config --global core.editor / usr / bin / vim
James
Innym możliwym winowajcą wydaje się być plugin patogen na Mac OS X .
sschuberth
3

Dla mnie był to problem z moim .vimrc. Tymczasowa zmiana nazwy tego pliku naprawiła problem. Następnie debugowanie pliku .vimrc. Jest to bardzo podobne do doświadczenia ignu.

Clay Bridges
źródło
Tak, miałem! Silent colorscheme macvim w moim .vimrc, aby ustawić schemat kolorów na taki, jeśli istniał, i nie zgłaszać mi błędów, jeśli tak nie jest (więc vim wiersza poleceń działałby). Z drugiej strony zmieniło to status wyjścia na 1, gdy się nie udało, nawet z cichym !.
Max
3

Jeśli z jakiegoś powodu chcesz użyć sublime, możesz zrobić coś takiego w swoim globalnym pliku konfiguracyjnym:

 git config --global core.editor "/Applications/Sublime\ Text.app/Contents/SharedSupport/bin/subl"
alphapilgrim
źródło
1

Zajęło mi trochę czasu, zanim wyśledziłem mój problem w jednej z moich wtyczek.

(konkretnie było to https://github.com/ervandew/supertab )

Myślę, że to wada automatycznego aktualizowania wszystkich moich wtyczek.

Więc najlepsza rada, wyłącz połowę swojego vimrc i wtyczek. Jeśli to nie pomoże, problem jest z twoją drugą połową.

ignu
źródło
Mam ten sam problem z supertabem.
harithski
Jak udało ci się wyśledzić to do supertabu? To byłaby naprawdę pomocna informacja.
Justin Force
1

Inną opcją jest użycie nanoedytora.

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

Naprawia to.

techkuz
źródło
1

Próbowałem zmiażdżyć commity, jak pokazano tutaj https://www.youtube.com/watch?v=V5KrD7CmO4o . Mój edytor git (notepad ++) otworzył się na etapie ponownego bazowania. Ale w kroku komunikatu o zmianie zmiany zobaczyłem problem „Nie można uruchomić edytora”. Prawdopodobnie stało się tak, ponieważ ustawienia edytora git były złe, a także dlatego, że zainstalowałem Notatnik ++ w niestandardowej lokalizacji w moim systemie Windows. To znaczy, dał mi „git config core.editor” notepad++ -multilnst- nosession.

Aby rozwiązać problem, podaj pełną ścieżkę w następujący sposób:

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

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

MasterJoe2
źródło
0

Czy jesteś pewien, że / usr / bin / vim był w wersji 1.7.3? Miałem ten sam problem, ponieważ miałem zainstalowaną wtyczkę do tworzenia kopii zapasowych, która jest obsługiwana tylko w wersji 1.7.3 iz jakiegoś powodu / usr / bin / vim został nagle zdegradowany do wersji 1.7.2, być może z powodu dużej aktualizacji XCode. ..

Flov
źródło
0

Miałem również ten problem, gdy miałem już otwarty vim na rebase w innym terminalu. Zacząłem od nowa, zostałem przerwany, a kiedy wróciłem, spróbowałem ponownie od zera na drugim terminalu, nie zdając sobie sprawy, że jestem w trakcie tego samego odradzania gdzie indziej. Samo zakończenie sesji rebase vima na drugim terminalu działało dobrze.

mmrobiny
źródło
0

Co dziwne, po prostu próbowanie tego ponownie zadziałało.

Moje zmienne core.editor i $ EDITOR nie są ustawione.

Eben Geer
źródło
0

U mnie, używając windows: zamknij bieżący terminal i otwórz inny (win + R, wpisz 'cmd', a następnie 'enter'), a potem nagle działa.

miao.wang
źródło
0

Rozwiązanie VS Code:

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

Eugene Balashov
źródło