Не вдалося виконати редактор


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 або .7 за датою. OSX, точно.
Роб Вілкерсон

5
Я думаю, що я створив цю проблему, коли використовував домашню мову для встановлення нового vim. Налаштування git config --global core.editor "/usr/local/bin/vim"зафіксувало це для мене.
mmell

Відповіді:


185

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


6
Де ви встановили повний шлях до / usr / bin / vi?
Amala

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.editorconfig, було недостатньо для вирішення проблеми. (Вони вже були на місці.)

У моїй ситуації проблему було вирішено, додавши -fпрапор до команди vi:

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

Після того, як ця -fопція встановлена, я можу використовувати git rebase -i, і коли я зберігаю і виходжу зі списку комісій, відновлення проходить як слід замість того, щоб видавати помилку "не вдалося виконати редактор".

Сторінка Vim man говорить про варіант -f,

Для версії GUI Vim не розщедриться та не відхилиться від оболонки, з якої він був запущений. ... Цю опцію слід використовувати, коли Vim виконується програмою, яка чекатиме завершення сеансу редагування (наприклад, пошта).

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


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
Джеймс

Інший можливий злочинець , здається, збудник плагін на Mac OS X .
sschuberth

3

Для мене це була проблема з моїм .vimrc. Тимчасове перейменування цього файлу виправлено. Далі слід налагодити мій .vimrc. Це дуже схоже на досвід ignu.


Так, я мав! Мовчазну кольорову схему macvim в моєму .vimrc, щоб встановити схему кольорів так, якби вона існувала, і не помиляти мене, якщо вона не була (так командний рядок vim буде працювати). З іншого боку, це змінило статус виходу на 1, коли воно не вдалося, навіть при беззвучному !.
Макс

3

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

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

1

Просто мені знадобилося певний час, щоб знайти мою проблему до одного з моїх плагінів.

(конкретно, це було https://github.com/ervandew/supertab )

Я думаю, що це мінус у автоматичному оновленні всіх моїх плагінів.

Тож найкраща порада, вимкніть половину свого vimrc та плагінів. Якщо це не допомагає, проблема з вашою другою половинкою.


У мене така ж проблема з supertab.
harithski

Як ви відстежили це на супертатаб? Це була б дійсно корисна інформація.
Джастін Форс

1

Інший варіант - використовувати nanoредактор.

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

Виправляє це.


1

Я намагався скинути коміти, як показано тут https://www.youtube.com/watch?v=V5KrD7CmO4o . Мій редактор git (блокнот ++) відкрився на кроці перезавантаження. Але на кроці повідомлення про внесення змін я побачив проблему "Не вдалося виконати редактор". Це, мабуть, сталося тому, що налаштування редактора git були невірними, а також тому, що я встановив блокнот ++ у нестандартному місці моєї системи 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


0

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


0

У мене була така проблема, коли мені вже було відкрито vim для відновлення бази даних в іншому терміналі. Я запустив ребазу, перервався, і коли я повернувся, я спробував його знову з нуля в іншому терміналі, не розуміючи, що я перебуваю в середині того ж ребату в іншому місці. Тільки завершення сеансу відновлення vim в іншому терміналі спрацювало чудово.


0

Як не дивно, тільки спробую це знову спрацювало для мене.

Мій змінний core.editor та $ EDITOR не встановлено.


0

Для мене, використовуючи windows: закрийте поточний термінал і відкрийте ще один (win + R, введіть 'cmd', потім 'enter'), і він раптом спрацює.


Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.