Как заставить git difftool использовать gvim (gvimdiff)?

Похоже, в git произошли изменения, из-за которых он больше не работает правильно с gvim в качестве инструмента сравнения. В частности, я всегда использовал флаг gvim -geometry, чтобы развернуть окно. Теперь у меня остается одно из пустых окон (файл с пустой / нулевой строкой).


person Alan Thompson    schedule 24.10.2014    source источник
comment
Нам бы понадобилась ваша настоящая конфигурация git, чтобы помочь. Кроме того, когда вы размышляете об изменении в git, имеет смысл упомянуть версию (и) Git, верно ?!   -  person Ingo Karkat    schedule 24.10.2014


Ответы (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, чтобы увидеть эффект от изменений.

person Alan Thompson    schedule 24.10.2014
comment
Вы также можете заменить gvimdiff на gvim -d, если хотите. - person Alan Thompson; 24.10.2014
comment
В Windows Server 2012R2 я смог использовать 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.

person Jim    schedule 29.11.2018