Este es uno de los capítulos del tutorial Neovim. Encontrarás los enlaces a todos los de capítulos, al final de este artículo.
Si bien el modo diff
de Vim es mas que interesante, probablemente no sea la forma más cómoda de gestionar ni de ver todos los archivos que tienes modificados. Con DiffView
tienes todas las ventajas de diff
, pero además tienes una interfaz que te ayudará con esos cambios mas complejos donde hay implicados mas de un archivo, o donde es mas difícil saber exactamente que has cambiado.
No solo esto, sino que además Diffview
, te ayudará en los procesos de merge
y para acceder al historial
.
Te tengo que confesar que este complemento para Neovim, me tiene completamente fascinado por las opciones y posibilidades que ofrece, y sobre todo, por la facilidad de uso.
Diff y Neovim con DiffView
Requisitos
Para funcionar con DiffView
es necesario cumplir con los siguientes requisitos,
- Git ≥ 2.31.0
- Neovim ≥ 0.7.0
- plenary.nvim
- nvim-web-devicons (optional) For file icons
Instalación
La instalación con Packer
es tremendamente sencilla. Tan solo tienes que añadir la siguiente línea,
use { 'sindrets/diffview.nvim', requires = 'nvim-lua/plenary.nvim' }
Uso y funcionamiento
Una vez instalado no tienes que hacer nada mas que ir a cualquiera de tus repositorios y entrar en Neovim. A partir de aquí, vas a la línea de comandos y ejecutas :DiffViewOpen
, y se abrirán tres paneles.
El panel de mas a la izquierda te muestra todos los comandos en lo diferentes archivos que se encuentran en ese repositorio. Y los dos paneles de la derecha te muestran para cada uno de los archivos los diferentes cambios que existen.
Para navegar entre los diferentes archivos, simplemente tienes que utilizar tab
o mayúsculas-tab
, en función de si quieres ir hacia adelante o hacia atrás respectivamente.
Pero no solo esto, sino que además tienes la posibilidad de realizar comparaciones con otros puntos de tu historial en git
, como por ejemplo,
:DiffviewOpen
:DiffviewOpen HEAD~2
:DiffviewOpen HEAD~4..HEAD~2
:DiffviewOpen d4a7b0d
:DiffviewOpen d4a7b0d^!
:DiffviewOpen d4a7b0d..519b30e
:DiffviewOpen origin/main...HEAD
Además del comando :DiffviewOpen
tienes a su opuesto DiffviewClose
que se encarga de cerrar el actual diffview
, aunque esto también lo puedes hacer con :tabclose
. Y algunos otros como,
:DiffviewToggleFiles
oculta o muestra el panel donde se encuentran todos los archivos modificados.:DiffviewFocusFiles
muestra el panel de información.:DiffviewRefresh
actualiza el panel.
En el caso de que hayas modificado un archivo y lo quieras restaurar a su origen, es tan sencillo que desde el panel, pulses la combinación de teclas Mayúsculas-x
. Simplemente con esto lo devolverás a su estado original.
File History
La vista File History
te permite listar todos los commits realizados y a su vez ver los cambios que se han realizado. Estos cambios los ves además mediante una vista diferenciada, lo que te permitirá apreciar fácilmente los mismos. Así, por ejmplo,
:DiffviewFileHistory
te muestra todos los commits de la rama en curso:DiffviewFileHistory %
te muestra todos los commits del archivo en curso:DiffviewFileHistory ruta/a/un/archivo.txt
lo mismo pero apuntando a un archivo concreto:DiffviewFileHistory --base=HEAD~2
aquí cambias la base de referencia
Merge Tool
Y por supuesto, y como no podía ser de otra forma, también tiene su herramienta para hacer merge
, y esto te puedo decir que es una auténtica gozada. Ahora si que no hay opción de equivocarse (a lo mejor me he venido un poco arriba). Pero, lo que te puedo garantizar, es que con esta herramienta el realizar un merge
con conflictos no es tan problemático. Es bastante cómodo de hacer.
Así en el caso de que tengas un conflicto, al abrir :DiffviewOpen
verás cuatro paneles. El de mas a la izquierda se corresponde con el panel en el que se muestran todos los archivos afectados y las correspondientes estadísticas. En los siguientes tres paneles te encontrarás lo siguiente,
- El panel de mas a la izquierda se corresponde con tus cambios locales. Además está identificado fácilmente como nuestro (ours).
- En cambio en el panel de mas a la derecha se corresponden con los cambios que se encuentran en el repositorio.
- Por último, en el panel central verás tanto los cambios remotos como los locales.
Para resolver el problema, simplemente tienes que utilizar los siguientes atajos de teclado
<leader>co
apuesta por nuestros cambios<leader>ct
apuesta por los cambios remotos
El vídeo
Y todo esto que te he contado, igual pero en vídeo
Conclusión
Simplemente se trata de una herramienta imprescindible…, o casi. Aquí depende del uso de cada uno y del flujo de trabajo que cada uno tenga interiorizado. Pero sea como fuere, es una herramienta para tener en cuenta, y en su caso, integrarla, porque estoy convencido que te ayudará enormemente para trabajar con repositorios git.
Más información,
Gracias lorenzo. siempre vengo a tu canal y tu blog ccuando tengo dudas o algun problema.
Muchísimas gracias Ema.
Un saludo.