Не удалось выполнить редактор

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

Результат: Could not execute editor

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

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

Ответ 1

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

Ответ 2

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

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

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

[править]

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

Ответ 3

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

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

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

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

Страница -f vim говорит о опции -f,

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

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

Ответ 4

У меня была эта проблема, и она была вызвана частью модуля 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 и распечатать код выхода.

Ответ 5

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

Ответ 6

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

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

Ответ 7

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

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

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

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

Ответ 8

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

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

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

Ответ 9

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

Ответ 10

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

Ответ 11

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

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

Ответ 12

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

Ответ 13

VS Code Solution:

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

Ответ 14

Я пытался раздавить коммиты, как показано здесь 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.