Ответ 1
После небольшого количества поисковых запросов, выясняется, что ответ заключается в следующем:
git config --global core.editor $(which vim)
После обновления дистрибутива janus vim возникла проблема с использованием vim для сообщений о фиксации. Лучший пример этого - это сделать git pull
, чтобы получить другие изменения. Появится редактор vim, я набираю сообщение commit, я ввожу : w q, но вместо выполнения транзакции появляется следующее сообщение об ошибке:
error: There was a problem with the editor 'vi'.
Not committing merge; use 'git commit' to complete the merge.
Затем мне нужно вручную зафиксировать: (
Как мне получить git, чтобы хорошо играть с vim?
После небольшого количества поисковых запросов, выясняется, что ответ заключается в следующем:
git config --global core.editor $(which vim)
Nat Ritmeyer дал правильное решение . Я дам вам причину.
Как объяснил Стив Тук, скрывая ваш ~/.vimrc
или явно говоря git
, чтобы использовать полный путь к vim
, решает проблема. Тем не менее, он заканчивается словами "Id по-прежнему нравится обращаться к корню проблемы".
Попробуйте следующее:
git commit
, чтобы попасть в редактор vim
.<CTRL> + Z
, чтобы остановить процесс и вернуться к TTYСделайте ps
и обратите внимание на свой TTY (номер которого вы получаете с помощью команды tty
) есть что-то вроде...
$ tty
/dev/ttys005
$ ps
PID TTY TIME CMD
17547 ttys005 0:00.15 -bash
65126 ttys005 0:00.02 git commit
65127 ttys005 0:00.10 vi .git/COMMIT_EDITMSG
$ which vi
/usr/bin/vi
$ ll /usr/bin/vi
lrwxr-xr-x 1 root wheel 3 Oct 3 17:40 /usr/bin/vi -> vim
$ jobs
[1]+ Stopped git commit
Вернитесь к вашему процессу vim с помощью fg %1
(или того, что когда-либо остановило номер задания, в котором указан git commit
).
Что говорит нам этот вывод оболочки...
bash
, называемом git
и git
, называемом vi
vi
равен /usr/bin/vi
vi
является символической ссылкой на vim
<CTRL> + Z
остановил команду git commit
, и она была # 1 в стеке заданий.Итак, vi - это ту же команду, что и vim?!?! Да, но vim
отмечает, что ее argv[0]
был vi
и работает в совместимый режим. Это может вызвать проблемы в зависимости от того, что находится в вашем .vimrc
.
лучшее решение - сообщить git использовать vim, но я предлагаю вам не предполагать, что ваш vim-путь будет таким же, как и все elses (возможно вы установили через brew install vim
)
git config --global core.editor $(which vim)
Это может быть плагин или что-то в вашем .vimrc файле. Лучший способ загрузить vim в безопасном режиме для редактирования сообщений фиксации - использовать:
git config --global core.editor '/usr/bin/vim -f -u NONE'
Я сталкивался с той же проблемой каждый раз, когда я получал удаленное репо и сливал его с другой веткой.
Ввод этого в терминал фиксировал это для меня
git config --global core.editor $(which vim)
Если по какой-либо причине git config --global core.editor /usr/bin/vim
не работает, попробуйте без флага --global
. Я мог заставить его работать только без флага --global
.