Похоже, в git произошли изменения, из-за которых он больше не работает правильно с gvim в качестве инструмента сравнения. В частности, я всегда использовал флаг gvim -geometry, чтобы развернуть окно. Теперь у меня остается одно из пустых окон (файл с пустой / нулевой строкой).
Как заставить git difftool использовать gvim (gvimdiff)?
Ответы (2)
Хорошо, я нашел ответ. Для правильной работы gvim должен оставаться на переднем плане и НЕ запускать новый процесс, как обычно. Это достигается с помощью флага -f
или --nofork
при запуске gvim (или gvimdiff).
Я установил следующий псевдоним, который работает:
alias gitdg='git difftool --noprompt --extcmd="gvim -d --nofork -geometry 220x80+2000+40" '
Пожалуйста, обратите внимание на размещение одинарных и двойных кавычек, чтобы оболочка zsh оставалась счастливой.
Я использовал параметр gvim -geometry
, чтобы настроить окна различий на 220 строк на 80 столбцов. + 2000 + 40 означает, что верхний левый угол окна смещен на 2000 пикселей по горизонтали и 80 пикселей по вертикали от верхнего левого угла всех мониторов, поэтому окно появляется на правом мониторе моей установки с двумя мониторами. Попробуйте установить для него значение -geometry 160x40+60+20
, чтобы увидеть эффект от изменений.
git difftool --no-prompt --extcmd="'C:\Program Files (x86)\Vim\vim81\gvim' -d -f"
описанное выше привело меня туда, где мне нужно было быть. Спасибо.
- person Jim; 29.11.2018
В Windows Server 2012R2 добавление следующего файла в мой .gitconfig также помогло мне. По моему опыту, параметры -d и -f не нужны для моей настройки. Несмотря на то, что это Windows, убедитесь, что вы используете косую черту '/' для информации о пути.
[alias]
d = difftool
[diff]
tool = gvimdiff
[difftool]
prompt = false
[difftool "gvimdiff"]
path = "C:/Program Files (x86)/Vim/vim81/gvim.exe"
Пробный прогон ...
c:\>git d index.html
Я также обнаружил, что определил функцию для difffexpr в моем _vimrc, это нужно было закомментировать так ...
"set diffexpr=MyDiff()
... что позволяет «новому» встроенному различию работать в gVim. С этими изменениями все работало в gui vim.