Eu quero usar o vim para ver a saída de git diff
.
Estou executando o Windows 8 e tenho o vim 7.4 instalado. Eu, por conveniência, criei uma variável de ambiente VIMDIR definida para o diretório de instalação do Vim ( set VIMDIR=C:\Program Files (x86)\Vim\vim74
), e adicionei este diretório ao% PATH%.
O Vim vem com um script %VIMDIR%\macros\less.bat
, que pode ser usado como um pager, para que less.bat file.txt
ou dir | less.bat
exiba a saída em um pager baseado em vim. Eu uso isso regularmente e funciona bem. Eu também gostaria de usar o vim, ao invés do Git's less.exe, como o pager do git, para que ele seja executado quando eu faço git diff
, mas estou com problemas.
Eu tentei usar o arquivo em lote less.bat
do vim
Se eu definir %GIT_PAGER%
para %VIMDIR%\macros\less.bat
e fazer um git diff
, recebo uma mensagem de erro:
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'
Acredito que isso seja porque o git é um programa MSYS, o que significa que ele não pode lidar com C:\whatever
caminhos no estilo do Windows.
Eu também tentei invocar menos macro diretamente do vim
Então isso não funciona. A próxima coisa que tentei foi examinar less.bat
e definir %GIT_PAGER%
para algo baseado nesse arquivo. Nesse arquivo, vejo esta linha, que instrui o vim a ler stdin:
vim --cmd "let no_plugin_maps = 1" -c "runtime! macros/less.vim" -
Eu defino %GIT_PAGER%
para uma versão modificada disso que usa caminhos no estilo MSYS:
set GIT_PAGER="/c/Program Files (x86)/Vim/vim74/vim.exe" --cmd "let no_plugin_maps = 1" -c "runtime! macros/less.vim" -
Isso faz com sucesso o lançamento do vim! Mas ainda há um problema: as cores não estão funcionando e há caracteres de escape espalhados por toda a tela. Observe que, normalmente, o destaque da sintaxe funciona bem. Se eu executar esses comandos, ele exibirá o arquivo diff que eu gero com cores:
git diff > test.diff
less.bat test.diff
No entanto, se eu simplesmente chamar git diff
e usar %GIT_PAGER%
para exibir o diff para mim no console, isso me mostrará:
O que mais posso experimentar?
Não sei mais o que tentar. Alguém mais está usando o vim para ver o git diffs no Windows? Como você está fazendo isso?
Obrigado por qualquer ajuda.