помилка: виникла проблема з редактором 'vi' під час використання його з git


13

У мене є ця дивна проблема з використанням viяк редактора для git commit -a.

Нормальний потік такий: я набираю git commit -a, viз'являється, вводя своє повідомлення про фіксацію, а потім :wqдля збереження та виходу з нього vi.

Це чудово працює. Однак іноді я роблю помилку на друку і замість того, :wqщоб набирати текст :Wq(тому що я використовую зміну для :). Потім, коли я виправляю себе і ввожу :wqще раз, gitвидає таку помилку:

error: There was a problem with the editor 'vi'.
Please supply the message using either -m or -F option.

Як я можу це виправити?


Яка версія gitта vi? Я не можу спростувати це з vim 7.3, git версія 1.7.11.1.
Крістофер

@Christopher: vi 7.3та git 1.7.9.6 (Apple Git-31.1), типові - на Mountain Lion
afaik

Відповіді:


15

viіснує з ненульовим статусом, хоча без додаткових подробиць про ваше налаштування важко сказати, чому. Якщо ви використовуєте багато плагінів vim, ви можете спробувати перемістити .vimrcфайл .vimrc.backі побачити, чи зможете ви повторити. Є кілька джерел, які обговорюють цю проблему, включаючи принаймні одне з потенційним рішенням:

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

Я б спробував видалити ваш .vimrcперший. Здається, це викликає більше побоювання.


5
Спасибі, git config --global core.editor /usr/bin/vimвиправили.
houbysoft

1
@ рішення applOOb краще, оскільки це не хак, як цей.
jefflunt

15

Відповідь тут: /programming/22699614/git-commit-messages-lost-by-vi

Справжнє рішення - це

git config --global core.editor vim -f

Відповідно до документації vim - -f option should be used when Vim is executed by a program that will wait for the edit session to finish


3
Нарешті ... це правильне рішення. Він також вирішує проблему натискання :Wта відхилення вашого git повідомлення, коли згодом ви зберігаєте його.
Ryanmt

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

1

Чи використовуєте плагіни golang vim? Цей рядок викликає проблему значення виходу для мене: filetype plugin indent off

Видалення цілого блоку плагінів golang .vimrcвиправлено проблему. Встановити плагін golang за допомогою втікача може бути так само просто:ln -s $GOROOT/misc/vim ~/.vim/bundle/vim-golang

(Я щойно задокументував проблему в цьому номері на vim-golang github )


0

Щось не так з конфігурацією Git, я думаю.

Таким чином, рішення полягає в тому, щоб скинути конфігурацію Git, і це працювало для мене:

git config --global core.editor $(which vim)

$(which vim)є більш гнучким, ніж /usr/bin/vim(виконується програма vim для деяких людей)

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