У меня есть эта странная проблема с использованием vi
в качестве редактора для git commit -a
.
Обычный поток: я печатаю git commit -a
, vi
появляется, я ввожу свое сообщение о коммите, а затем :wq
сохраняю и выхожу из него vi
.
Это отлично работает. Тем не менее, иногда я делаю опечатку и вместо того, чтобы :wq
печатать :Wq
(потому что я использую Shift для :
). Затем, когда я исправляю себя и печатаю :wq
снова, git
выдает следующую ошибку:
error: There was a problem with the editor 'vi'.
Please supply the message using either -m or -F option.
Как я могу это исправить?
mountain-lion
terminal
git
vi
houbysoft
источник
источник
git
аvi
? Я не могу воспроизвести это с vim 7.3, git version 1.7.11.1.7.3
и git1.7.9.6 (Apple Git-31.1)
, стандартные по умолчанию на Mountain Lion afaikОтветы:
vi
существует с ненулевым статусом, хотя без дополнительных подробностей о вашей настройке трудно сказать, почему. Если вы используете много плагинов дляvim
, вы можете попробовать переместить.vimrc
файл в.vimrc.back
и посмотреть, сможете ли вы воспроизвести. Есть несколько источников, которые обсуждают эту проблему, в том числе по крайней мере один с потенциальным решением:Я бы попробовал удалить твою
.vimrc
первую, однако. Кажется, это вызывает еще больший ужас.источник
git config --global core.editor /usr/bin/vim
исправили это.Как ответили здесь: https://stackoverflow.com/questions/22699614/git-commit-messages-lost-by-vi
Настоящее решение состоит в том, чтобы
Согласно документации vim -
-f option should be used when Vim is executed by a program that will wait for the edit session to finish
источник
:W
и отклонения вашего комита сообщением git при последующем его сохранении.vim
вызовом и взломом, который они используют.Вы используете плагины golang vim? Эта строка вызывает у меня проблему со значением выхода vi:
filetype plugin indent off
Удаление целого блока плагинов golang
.vimrc
исправило проблему. Установить плагин golang с помощью fugitive можно так же просто, как:ln -s $GOROOT/misc/vim ~/.vim/bundle/vim-golang
(Я только что задокументировал проблему в этом выпуске на github vim-golang )
источник
Я думаю, что-то не так с Git config.
Таким образом, решение состоит в том, чтобы сбросить конфиг Git, и он работал для меня:
$(which vim)
является более гибким, чем/usr/bin/vim
(исполняемый файл vim может быть недоступен для некоторых людей)источник