Vimdiff не работает в Git Bash, говорит E97: невозможно создавать различия

Версии вещей:

  • ОС: Win 8.1
  • Vim: 8.1
  • Git: 2.18.0.windows.1
  • GNU bash: 4.4.19 (2)

Я пытаюсь использовать vimdiff в Git Bash, но получаю E97: Cannot create diffs error. Отсюда оба файла открываются рядом друг с другом, но нет синтаксической справки для различий. Как только я выхожу из обоих файлов и возвращаюсь в терминал bash, я вижу следующее:

/usr/bin/bash: /usr/share/vim/vim81diff: No such file or directory

Мне кажется, что Git Bash ищет программу сравнения не в том месте. Но он по-прежнему передает файлы в vim, поэтому я не уверен. Git Bash принес свою собственную копию vim, где все файлы поддержки находятся в

/usr/share/vim/vim81/

но бывшие (vimdiff.exe, vim.exe и т. д.) находятся в

/usr/bin/

если я убегу

$ which -a vimdiff

он возвращается

/usr/bin/vimdiff
/bin/vimdiff
/usr/bin/vimdiff

Это из новой установки Git.

Я использовал полный путь к vimdiff в папке Git Bash. Я также создал два тестовых файла и запустил для них vimdiff внутри каталога / usr / bin / и получил те же результаты.

Если я использую свою локальную установку vim, перейдя в cmd, перейду в тот же каталог и использую их в тех же файлах, он будет работать, как ожидалось. Это просто происходит в Git Bash. Я хотел бы, чтобы vimdiff был установлен как мой git difftool, но мне нужно, чтобы vimdiff работал.

Есть идеи о том, что вызывает это и как это решить?


person atoms    schedule 24.08.2018    source источник
comment
На что настроен diff.tool? (stackoverflow.com/a/17541084/6309)   -  person VonC    schedule 24.08.2018
comment
@VonC На данный момент vimdiff. При использовании того, что по умолчанию используется, он работает, но я не знаю, что такое diff.tool по умолчанию для Git Bash. Когда я использую vimdiff в качестве инструмента diff.tool, я получаю тот же результат, что и описанный выше. Чтобы было ясно, прямо сейчас я просто пытаюсь заставить vimdiff file1.txt file2.txt работать в Git Bash должным образом. Git пока не играет роли в этих тестах. Как только это сработает, я перейду к настройке в качестве инструментов сравнения и слияния для git. Спасибо   -  person atoms    schedule 24.08.2018


Ответы (1)


Действительно, система ищет программу сравнения там, где ее нет. У меня была такая же проблема, и я решил ее, создав ссылку на инструмент сравнения в том месте, где vim ожидает, что это будет.

  • в git bash перейдите к /usr/share/vim
  • создать ссылку: ln -s /usr/bin/diff vim81diff

В моем файле ~ / _vimrc есть функция MyDiff (), ожидающая, что исполняемый файл diff будет составлен из $VIMEXECUTUABLE с суффиксом diff, в результате получается vim81diff, которого нет в моей установке git bash.

Я не знаю, имеет ли это значение для проблемы, но у меня есть отдельная установка vim 8.1 в Windows 10, в которой используется тот же _vimrc.

person MinCoz    schedule 25.09.2019
comment
ln -s /usr/bin/diff vimXXdiff, где XX - версия Vim - person Jose; 19.01.2021