Я недавно написал некоторый код golang, который запускает "git commit" как подпроцесс. Git по очереди вызывает vim как подпроцесс, чтобы я мог редактировать сообщение коммита. Тем не менее, я считаю, что когда vim выполняется таким образом, клавиша возврата не работает должным образом. После фиксации вывод терминала поврежден, как будто у некоторого компонента есть отслеживание количества столбцов в строке. Это последнее поведение исправлено с помощью команды сброса.
В выводе появляется очень интересная подсказка:
Vim: Warning: Input is not from a terminal
Похоже, что информация терминала не передается в подпроцесс.
У меня нет этих проблем, когда я использую vim напрямую или когда я запускаю git commit непосредственно в командной строке. Есть ли у вас какие-либо идеи о том, как я могу устранить неполадки и устранить эту проблему?
Я использую vim 8.1 на Mac:
VIM - Vi IMproved 8.1 (2018 May 18, compiled Aug 9 2018 16:08:01)
macOS version
Included patches: 1-235
Compiled by Homebrew
Huge version with MacVim GUI. Features included (+) or not (-)...
Моя программа golang не изменяет переменную Cmd.Env объекта exec.Cmd. Когда я запускаю «which vim» в golang через exec.Command («which», «vim»), я могу подтвердить то же местоположение, что и в командной строке. Тем не менее, я понимаю, что git commit не обязательно найдет то же место для vim.
Мой .gitconfig содержит:
[core]
editor = vim
но я не вижу ничего другого, что, очевидно, изменило бы поведение редактора.