¿Cómo puedo ver múltiples diferencias git una al lado de la otra en vim?

Me gustaría poder ejecutar un command que abre un git diff en vim, con una pestaña para cada file en el set de diferencias.

Entonces, si, por ejemplo, he cambiado los files foo.txt y bar.txt en mi tree de trabajo y ejecuté el command, vería vim abrir con dos tabs. La primera pestaña contendría una diferencia lado a lado entre foo.txt en mi tree de trabajo y foo.txt en el repository, y la segunda pestaña contendría un diff lado a lado para bar.txt.

¿Alguien tiene alguna idea?

La forma en que haría esto (aunque no es un solo command)

  1. Abra files con cambios en las nuevas tabs vim :

    vim -p $ (git diff –name-only)

  2. Para cada buffer, obtenga el diff de su HEAD actual con el plugin vcscommand vim

    : VCSVimDiff

Esto da una buena vista de la diferencia, aunque no en forma de parche.

Por cualquier otra cosa me quedaría con git diff .

EDITAR

Al igual que Dave escribe a continuación, los pasos 1 y 2 se pueden combinar mediante el uso de

 vim -p $(git diff --name-only) -c "tabdo VCSVimDiff" 

Se adaptó la respuesta de Benjamin Bannier + Dave Kirby anterior para usuarios fugitivos.

Como uso fugitive.vim, adapté lo anterior para mi caso de uso más frecuente, mirando la diferencia entre los últimos 2 commits:

 vim -p $(git diff --name-only HEAD~1 HEAD) -c "tabdo :Gdiff HEAD~1" 

Cargar todos los cambios en tabs es mucho mejor que pasarlos secuencialmente con git difftool .

A pesar de que no hace exactamente lo que usted quiere, git difftool es probablemente su mejor opción. El comportamiento fuera de la caja de 'git difftool –tool = vimdiff –no-prompt HEAD' es ejecutar vimdiff secuencialmente para cada file en el directory de trabajo con cambios.

Este simple plugin me ha funcionado: TabMultiDiff . Básicamente, crea una pestaña de diferencias para cada par de files pasados ​​a vim. La pestaña se nombra después del segundo file en cada par.

Tenga en count que no es compatible con el administrador de complementos , por lo que debe instalarlo manualmente copyndo tab-multi-diff.vim a .vim/plugin .

Aquí hay una captura de pantalla de la comparación de dos pares de files simples (aaa / aab y aac / aad). Tenga en count que también uso vim-scripts / diffchar.vim, que es la razón por la cual los caracteres individuales están resaltados. enter image description here