Я хочу использовать vim для просмотра выходных данных git diff
.
Я использую Windows 8 и у меня установлен vim 7.4. Для удобства я создал переменную среды VIMDIR, установленную в каталог установки Vim (set VIMDIR=C:\Program Files (x86)\Vim\vim74
), и добавил этот каталог в% PATH%.
Vim поставляется со %VIMDIR%\macros\less.bat
, который можно использовать как пейджер, так что less.bat file.txt
или dir | less.bat
отобразит вывод в пейджере на основе vim. Я пользуюсь этим регулярно, и он отлично работает. Я также хотел бы использовать vim, а не Git less.exe в качестве пейджера git, чтобы он работал, когда я выполняю git diff
, но у меня возникают проблемы.
Я пытался использовать командный файл less.bat
vim
Если я устанавливаю %GIT_PAGER%
в %VIMDIR%\macros\less.bat
и выполняю git diff
, я получаю сообщение об ошибке:
C:\Program Files (x86)\Vim\vim74\macros\less.bat: -c: line 0: syntax error near unexpected token `('
C:\Program Files (x86)\Vim\vim74\macros\less.bat: -c: line 0: `C:\Program Files (x86)\Vim\vim74\macros\less.bat'
Я считаю, что это потому, что git - это программа MSYS, то есть она не может обрабатывать C:\whatever
стиле Windows, какими бы ни были пути.
Я также пытался напрямую вызывать меньше макросов vim
Так что это не работает. Следующее, что я попробовал, было изучить less.bat
и установить %GIT_PAGER%
на что-то на основе этого файла. В этом файле я вижу эту строку, которая инструктирует vim читать из stdin:
vim --cmd "let no_plugin_maps = 1" -c "runtime! macros/less.vim" -
Я установил %GIT_PAGER%
для модифицированной версии, которая использует пути в стиле MSYS:
set GIT_PAGER="/c/Program Files (x86)/Vim/vim74/vim.exe" --cmd "let no_plugin_maps = 1" -c "runtime! macros/less.vim" -
Это успешно запустить Vim! Но есть еще проблема: цвета не работают, и по всему экрану разбросаны escape-символы. Обратите внимание, что обычно подсветка синтаксиса работает просто отлично. Если я выполню эти команды, он отобразит файл diff, сгенерированный мной, с цветом:
git diff > test.diff
less.bat test.diff
Однако, если я просто вызываю git diff
и использую %GIT_PAGER%
чтобы отобразить diff для меня в консоли, это показывает мне это:
Что еще я могу попробовать?
Я не уверен, что еще попробовать. Кто-нибудь еще использует vim для просмотра git diff на Windows? Как дела?
Спасибо за любую помощь.