Часто, когда я заканчиваю писать сообщение фиксации в VIM, я набираю :Wq<ENTER> вместо :wq<ENTER>, потому что удерживаю клавишу Shift, чтобы ввести двоеточие. Это заставляет VIM отвечать E492: Not an editor command: Wq.

Пока все в порядке, я просто повторно набираю :wq<ENTER>, чтобы сохранить сообщение фиксации и выйти из VIM. Однако коммит тогда не работает, и терминал показывает что-то вроде этого:

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

Почему случайный ввод :Wq<ENTER> перед выполнением правильного :wq<ENTER> приводит к сбою фиксации? Есть ли способ сделать так, чтобы фиксация произошла после ввода :Wq<ENTER>?

5
JKillian 24 Дек 2015 в 18:56

2 ответа

Лучший ответ

Это статья, кажется, описывает похожую проблему.

Похоже, что при использовании заглавной буквы «W» Vim выходит с кодом ошибки при вызове Git.

Попытался ли ты:

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

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

Также см. этот вопрос , который указывает на то, что он может иметь отношение к настройке filetype.

5
Community 13 Апр 2017 в 12:36

Я не смог воспроизвести эту проблему. То есть я смог получить ошибку E492: Not an editor command: Wq, но после запуска :wq успешно закрыл vim и сохранил фиксацию.

Возможно, вы можете попробовать что-то похожее на этот ответ - https://stackoverflow.com/a/117221/864233

:command WQ wq
:command Wq wq
:command W w
:command Q q

Сохраните эти четыре «псевдонима» в файл в ~/.vimrc, и если вы случайно снова запустите :Wq, это не приведет к ошибке.

Кроме того, как отмечал выше Джонатан.Бринк , убедитесь, что вы действительно используете vim , а не vi , так как это может вызвать некоторые проблемы, например Что ж.

2
Community 23 Май 2017 в 12:02