Quiero usar vim para ver el resultado de git diff.

Quiero usar vim para ver el resultado de git diff.

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.batscript, que puede usarse como buscapersonas, de modo que less.bat file.txtmuestre dir | less.batla 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.batel archivo por lotes de vim.

Si configuro %GIT_PAGER%y %VIMDIR%\macros\less.bathago 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:\whateverrutas 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.baty 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 diffy lo uso %GIT_PAGER%para mostrarme la diferencia en la consola, me muestra esto:

captura de pantalla

¿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 diffaú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:

  1. Deshabilite el resaltado de diferencias de Git (argumento de línea de comando --no-color, pero también puede desconfigurarlo a través de git 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}).

  2. Hacer que Vim comprenda y resalte las secuencias de escape ANSI; elComplemento AnsiEsc.vimpuede hacer esto.

Recomiendo el primer enfoque.

información relacionada