5

У меня 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, я не осознавал этого, когда впервые задал вопрос. Я мог видеть, как это может вызвать проблемы, но после игры я еще не смог это исправить.

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

1 ответ1

9

Благодаря @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, но были некоторые проблемы. Я мог просматривать файлы, но сам инструмент не смог различить, выдав эти ошибки:

ошибки сравнения

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

set shell=bash

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

Всё ещё ищете ответ? Посмотрите другие вопросы с метками .