Quiero usar vim para ver el resultado de git diff
.
Estoy ejecutando Windows 8 y tengo instalado vim 7.4. Para mayor comodidad, creé una variable de entorno VIMDIR configurada en el directorio de instalación de Vim ( set VIMDIR=C:\Program Files (x86)\Vim\vim74
) y agregué este directorio a %PATH%.
Vim viene con un %VIMDIR%\macros\less.bat
script, que puede usarse como buscapersonas, de modo que less.bat file.txt
muestre dir | less.bat
la salida en un buscapersonas basado en vim. Lo uso regularmente y funciona bien. También me gustaría usar vim, en lugar de less.exe de Git, como buscapersonas de git, para que se ejecute cuando lo haga git diff
, pero tengo problemas.
Intenté usar less.bat
el archivo por lotes de vim.
Si configuro %GIT_PAGER%
y %VIMDIR%\macros\less.bat
hago a git diff
, aparece un mensaje de error:
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'
Creo que esto se debe a que git es un programa MSYS, lo que significa que no puede manejar C:\whatever
rutas al estilo de Windows.
También intenté invocar la macro less de vim directamente
Entonces eso no funciona. Lo siguiente que intenté fue examinar less.bat
y configurar %GIT_PAGER%
algo basado en ese archivo. En ese archivo, veo esta línea, que le indica a vim que lea desde la entrada estándar:
vim --cmd "let no_plugin_maps = 1" -c "runtime! macros/less.vim" -
Configuré %GIT_PAGER%
una versión modificada de esto que usa rutas de estilo MSYS:
set GIT_PAGER="/c/Program Files (x86)/Vim/vim74/vim.exe" --cmd "let no_plugin_maps = 1" -c "runtime! macros/less.vim" -
¡Eso inicia vim con éxito! Pero todavía hay un problema: los colores no funcionan y hay caracteres de escape esparcidos por toda la pantalla. Tenga en cuenta que normalmente el resaltado de sintaxis funciona bien. Si ejecuto estos comandos, mostrará el archivo de diferencias que generé con color:
git diff > test.diff
less.bat test.diff
Sin embargo, si simplemente llamo git diff
y lo uso %GIT_PAGER%
para mostrarme la diferencia en la consola, me muestra esto:
¿Qué más puedo probar?
No estoy seguro de qué más probar. ¿Alguien más está usando vim para ver diferencias de git en Windows? ¿Cómo lo haces?
Gracias por cualquier ayuda.
Respuesta1
El problema restante es que git diff
aún resalta la salida de diferencias con colores (como secuencias de escape ANSI) y espera que el buscapersonas (es decir, Vim) lo muestre correctamente. Pero Vim tiene su propio resaltado de sintaxis (también para diferencias) y no comprende las secuencias, por lo que se muestran feas ^[[m
. Tienes dos opciones:
Deshabilite el resaltado de diferencias de Git (argumento de línea de comando
--no-color
, pero también puede desconfigurarlo a través degit config
). Ahora debe asegurarse de que Vim utilice el tipo de archivo correcto (:set filetype=diff
; puede pasarlo en la línea de comandos a través de-c {cmd}
).Hacer que Vim comprenda y resalte las secuencias de escape ANSI; elComplemento AnsiEsc.vimpuede hacer esto.
Recomiendo el primer enfoque.