Не удалось запустить редактор

153

Мне не часто приходится изменять несколько сообщений коммита, но это случалось один или два раза, и я никогда не помню, чтобы это видел. Я надеюсь, что кто-то еще. Когда я git rebase -i HEAD~7, ожидаемый список открывается в vi точно так, как ожидалось. Я изменяю pickзначения, editгде это уместно, а затем :wq.

Не удалось запустить редактор

core.editorУстановка в моей глобальной .gitconfigявляется vi(я также изменил его vimв дико отчаянный шаг). Я попытался использовать mate, но это даже не открыло первоначальный список должным образом, поэтому я изменил его обратно.

Я использую v1.7.3 и буду рад любым предложениям.

Роб Уилкерсон
источник
1
Источник включает в себя git_editor "$TODO" || die_abort "Could not execute editor". Поскольку вы говорите, что редактор действительно появляется, это означает, что он возвращает ненулевой код завершения. Можете ли вы повторить это поведение, используя его в командной строке?
Каскабель
Что странно для меня, так это то, что vi запускается для отображения списка коммитов, но когда я сохраняю и закрываю, все просто умирает. Посмотрите мой ответ на изменения, которые я сделал, чтобы это волшебным образом начало работать.
Роб Уилкерсон
На какой ОС вы работали? При запуске OSX Lion у меня возникла такая же проблема, и ваш ответ исправил ее. +1
Адам Льюис
@AdamLewis - я не могу быть уверен сейчас, но, вероятно, 10,6 или 0,7 с учетом даты. OSX, конечно.
Роб Уилкерсон
5
Я думаю, что создал эту проблему, когда использовал homebrew для установки нового vim. Установка git config --global core.editor "/usr/local/bin/vim"исправила это для меня.
mmell

Ответы:

185

Вчера был только один из тех дней. В общем, я решил установить полный путь к vi (например /usr/bin/vi), а не просто к исполняемому файлу. Теперь все работает. Я должен признать, что я не получаю его, так viкак он отлично исполняется сам по себе (моя $EDITORпеременная env также установлена ​​в vi), но он работает, и моя техническая карма в последнее время не так велика, так что, возможно, я просто не должен задавать вопросов божества будут ...

Роб Уилкерсон
источник
6
Где вы указали полный путь к / usr / bin / vi?
Амала
131
Я положил его в глобальном конфигурационном файле: git config --global core.editor "/usr/bin/vim".
Роб Уилкерсон
Я была такая же проблема. По причинам, которые я не могу понять, мои настройки core.editor были установлены на / user / bin / vim, а не на / usr / bin / vim
jonnybot
Была та же проблема, но с Sublime Text - полный путь окончательно решил проблему. Что было странно, потому что я уверен, что раньше все работало нормально ...: - \
Hal
git config --global color.editor "/usr/local/bin/vim"действительно работал для меня :), спасибо
przbadu
159

Следующая команда

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

исправляет это.

[редактировать]

Теперь я вижу, что кто-то уже опубликовал это в комментариях. Надеюсь, это все еще полезно для некоторых слепых людей, как я.

Лангустен Густел
источник
6
Например, для Windows (отсутствующие одинарные кавычки были моей проблемой): git config --global core.editor "'C: \ Program Files (x86) \ Vim \ vim74 \ vim.exe'"
chrjs
1
Да, это ^. Чтобы прояснить это, используйте двойные кавычки вокруг одинарных кавычек по пути к исполняемому файлу.
Джейкоб
Работает как шарм!
R11G
7

В отличие от других приведенных здесь ответов, для меня я использую абсолютный путь к vi и устанавливаю git core.editor решения проблемы было недостаточно config. (Они уже были на месте.)

В моей ситуации проблема была решена путем добавления -fфлага к команде vi:

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

Как только эта -fопция установлена, я могу использовать git rebase -i, и когда я сохраняю и завершаю список фиксации, перебазирование происходит, как и должно быть, вместо того, чтобы выдавать ошибку «не удалось выполнить редактор».

Страница man vim говорит о параметрах -f:

Для версии с графическим интерфейсом Vim не будет разветвляться и отсоединяться от оболочки, в которой он был запущен. ... Этот параметр следует использовать, когда Vim выполняется программой, которая будет ожидать завершения сеанса редактирования (например, по почте).

Ну, я не использую версию GUI, о которой я знаю. Я работаю gitв командной строке bash в окне терминала на masOS Sierra 10.12.6. Но так как git rebase -iожидание завершения сеанса редактирования, я полагаю, именно поэтому -fопция здесь необходима. Возможно, vim (без -f) пытается отключить / отделить от оболочки по какой-то причине, которую я не смог выяснить.

LarsH
источник
6

У меня была эта проблема, и она была вызвана некоторой частью плагина vcscommand для vim. Запуск vim с любой из этих команд привел к коду выхода 1 («ошибка»):

  • vi
  • vim

Но они дали мне код выхода 0 («успех»):

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

Я смог отследить его до определенного плагина, отключив ~/.vimrcи добавив файлы ~/.vim, переименовав их и запустив, vi -c q ; echo $?чтобы быстро запустить vim и распечатать код выхода.

Анника Бэкстрем
источник
1
У меня была та же проблема, и установка полного пути к vim сработала: git config --global core.editor / usr / bin / vim
James
Другой возможный преступник , кажется, возбудитель плагин на Mac OS X .
sschuberth
3

Для меня это была проблема с моим .vimrc. Временное переименование этого файла исправило его. Затем следует отладка моего .vimrc. Это очень похоже на опыт Игну.

Глиняные Мосты
источник
Да, у меня в .vimrc был! Silent colorscheme macvim, чтобы установить для colorcheme значение, если оно существовало, и не вызывать у меня ошибки, если это не так (поэтому будет работать командная строка vim). С другой стороны, это изменило статус выхода на 1, когда это не удалось, даже с тихим !.
Макс
3

Если вы хотите по какой-либо причине использовать возвышенное, вы можете сделать что-то вроде следующего в вашем глобальном конфигурационном файле:

 git config --global core.editor "/Applications/Sublime\ Text.app/Contents/SharedSupport/bin/subl"
alphapilgrim
источник
1

Мне потребовалось некоторое время, чтобы отследить мою проблему до одного из моих плагинов.

(в частности, это был https://github.com/ervandew/supertab )

Я думаю, что это недостаток автоматического обновления всех моих плагинов.

Так что лучший совет, отключите половину вашего vimrc и плагинов. Если это не поможет, проблема с вашей второй половиной.

ВПНЕ
источник
У меня такая же проблема с супертаб.
Харитски
Как вы отследили это до супертаба? Это было бы действительно полезной информацией.
Джастин Форс
1

Другой вариант - использовать nanoредактор.

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

Исправляет это.

techkuz
источник
1

Я пытался раздавить коммиты, как показано здесь https://www.youtube.com/watch?v=V5KrD7CmO4o . Мой редактор git (notepad ++) открылся на шаге перебазирования. Но на шаге сообщения о внесении изменений я обнаружил проблему «Не удалось выполнить редактор». Вероятно, это произошло из-за неправильных настроек редактора git, а также из-за того, что я установил notepad ++ в нестандартном месте в моей системе Windows. То есть 'git config core.editor' дал мне notepad++ -multilnst- nosession.

Чтобы решить эту проблему, укажите полный путь:

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

См. Https://www.youtube.com/watch?v=YLxdkcT6H4g.

MasterJoe2
источник
0

Вы уверены, что / usr / bin / vim был на 1.7.3? У меня была та же проблема, потому что у меня был установлен плагин резервного копирования, который поддерживается только в 1.7.3, и по какой-то причине / usr / bin / vim был внезапно понижен до 1.7.2, возможно, из-за серьезного обновления XCode. ..

Flov
источник
0

У меня также была эта проблема, когда у меня уже был открыт vim для перебазирования в другом терминале. Я начал перебазирование, был прерван, и когда я вернулся, я попробовал это снова с нуля в другом терминале, не понимая, что я был в середине того же перебазирования в другом месте. Просто завершение сессии vim rebase в другом терминале работало нормально.

mmrobins
источник
0

Как ни странно, просто попытка снова сработала для меня.

Мои переменные core.editor и $ EDITOR не установлены.

Эбен Гир
источник
0

Для меня, используя windows: закройте текущий терминал и откройте другой (win + R, введите «cmd», затем «enter»), затем он неожиданно заработает.

miao.wang
источник
0

VS Code Solution:

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

Евгений Балашов
источник