Git не запускает Vim в Cygwin

3073
Kazark

У меня Git работает с Vim в среде Powershell на моем рабочем ноутбуке (Windows 7). Он выскакивает Vim, когда я фиксирую или использую свой git vimdiffпсевдоним.

Я попытался сделать то же самое в Cygwin (будучи парнем из Unix), но когда я набираю git commitили git vimdiff, Vim не появляется; хотя, похоже, Git ждет Vim, потому что действие никогда не завершается до тех пор, пока я Ctrl- C(после чего требуется минута или около того, чтобы восстановиться). Я могу зафиксировать с помощью встроенных сообщений коммита ( git commit -m "I would rather type this in Vim"), и я могу запустить Vim / Vimdiff из терминала с помощью vimи vimdiff. У меня есть редактор для Vim в нескольких местах:

$ echo $EDITOR vim $ git config --get core.editor vim 

(Первоначально я не устанавливал его явно в Git, а только в переменной окружения, и все еще имел ту же проблему.)

Похоже, я использую Windows Git в Cygwin. Будучи новичком в Cygwin, я не осознавал этого, когда впервые задал вопрос. Я мог видеть, как это может вызвать проблемы, но после игры я еще не смог это исправить.

Кто-нибудь видел эту проблему раньше? Есть идеи как это исправить?

5
Вы пытались установить полный путь к vim в git config или $ EDITOR? skarface 11 лет назад 1
@skarface Ах: я сделал в Git, но забыл вернуться и сделать это в редакторе. Дай мне попробовать... Kazark 11 лет назад 0
@skarface Похоже, что `core.editor` имеет [более высокий приоритет] (http://stackoverflow.com/a/2596819/834176), чем` EDITOR`, поэтому я собираюсь придерживаться его моддинга. Думаю, я не понял, какой правильный полный путь для Cygwin Vim, хотя с точки зрения Windows Git, работающей в Cygwin ... или я хочу использовать Windows Vim? Kazark 11 лет назад 1

1 ответ на вопрос

9
Kazark

Благодаря @skarface я решил эту проблему в отношении коммитов. Во-первых, как я уже упоминал в редактировании вопроса, оказалось, что я не запускал Cygwin Git в Cygwin, а использовал Windows Git. Таким образом, проблема интеграции имеет смысл: она не находит vimили vimdiff.

Я должен был сделать:

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

Я не уверен, почему вышесказанное сработало, так как:

$ which vim /usr/bin/vim 

но:

$ ls C:/cygwin/usr/bin ls: cannot access C:/cygwin/usr/bin: No such file or directory 

Поэтому не уверен, почему именно этот путь сработал, но он это сделал.


Теперь я решил это и в отношении различий. Мне пришлось:

$ git config --global diff.tool vimdiff $ git config --global difftool.vimdiff.cmd 'C:/cygwin/bin/vim.exe -d "$LOCAL" "$REMOTE"' 

Это позволило мне запустить Vimdiff с Git, но были некоторые проблемы. Я мог просматривать файлы, но сам инструмент не смог различить, выдав эти ошибки:

diff errors

Похоже, что то, что происходило здесь, это то, что Git каким-то образом испортил shellопцию Vim . По моему .vimrc, я поставил эту команду:

set shell=bash 

и теперь все работает без сбоев.

На Cygwin `/ bin` и` / usr / bin` - это одно и то же, но Windows не знает об этом и видит только «настоящий» `C: \ cygwin \ bin`. При этом для лучшей интеграции лучше использовать пакет Cygwin `git`. Yaakov 11 лет назад 1
@Yaakov: да, наверное, лучше бы Cygwin Git. Хорошая вещь об использовании Windows Git заключается в том, что я могу выполнять команды Git-TFS. Когда я впервые опубликовал вопрос, я не понял, что использую Windows Git. Kazark 11 лет назад 0
идеально. это сработало для меня. +1 amphibient 10 лет назад 0