Vim не работает при вызове git commit в cygwin

Я использую git в Cygwin 64 под окнами. В стандартном редакторе vi и git используется редактор по умолчанию. Когда я назову 'git commit', будут отправлены следующие сообщения перед запуском vim:

git commit
Vim warning: output is not to a terminal
Vim warning: input is not from a terminal

После этого vi будет запущен, но не может управляться, "ESC", ":" не может использоваться, и мне нужно убить окно cygwin.

введите описание изображения здесь

Как я могу использовать vim для 'git commit'?

Ответ 1

У вас может быть Git для Windows (msysgit) или Vim для Windows. Из коробки они не совместимы с Cygwin64 - вам нужно будет настроить ваш путь для Cygwin, чтобы игнорировать эти установки.

Более простым вариантом было бы удалить оба этих элемента и просто использовать версию Cygwin.

Если вам нужно сохранить их по какой-либо причине, установите для параметра $PATH значение .bash_profile в качестве переопределения. Используйте существующие $PATH, минус пути msysgit и windows vim. Если вы используете скрипт bash, вы можете попробовать следующее, чтобы удалить пути при использовании bash, измененных в вашей конкретной ситуации:

msysgit='/cygdrive/c/Program Files/git:'
PATH="${msysgit//$PATH/}"
msysvim='/cygdrive/c/Program Files (x86)/vim/vim74:'
PATH="${mysysvim//$PATH/}"

Удачи!

Ответ 2

У вас установлена ​​версия Windows GIT, а не версия CYGWIN GIT. GIT по умолчанию поставляется с полным набором инструментов UNIX, включая собственную версию VI. К сожалению, эта версия VI не очень хорошо сочетается с CYGWIN. Лучший способ - установить GIT в CYGWIN, чтобы он использовал версию VI или VIM CYGWIN.

Ответ 3

Я столкнулся с этой же проблемой. @CYB.tachyon и @David Beckman оба объяснили, ПОЧЕМУ vim id break; но вместо того, чтобы удалять что-либо, я запустил команду git из командной строки в стиле DOS, и все прошло гладко. Я полагаю, что в конце концов, очистка различных вкусов vim станет МОИМ конечным решением, но если вы просто хотите продолжить свою работу, это было самым быстрым решением непосредственной проблемы.

Ответ 4

Это может быть причиной mintty, см. эту проблему.

Есть два способа исправить:

  • Используйте bash.exe вместо mintty:

    Щелкните правой кнопкой мыши на ярлыке cygwin, измените его с C:\cygwin64\bin\mintty.exe -i /Cygwin-Terminal.ico - на C:\cygwin64\bin\bash.exe --login -i

  • Добавьте правильный путь vim к git config:

    git config --global core.editor "C:/cygwin64/bin/vim.exe"

    Обратите внимание: не используйте cygdrive в пути, поскольку .gitconfig не может его распознать. И если вы используете 32-битный vim, то путь должен быть C:/cygwin/bin/