Comparar diferencias de archivos con vimdiff

Veamos cómo usar vimdiff para comparar las diferencias entre dos archivos de texto

Con la herramienta vimdiff podremos comparar las diferencias entre dos archivos de texto y aplicar cambios en uno u otro fichero con toda la potencia del editor Vim.

En estos días (por un proyecto en el que ando metido y del que pronto espero dar más noticias en el blog) tengo la necesidad de comparar las diferencias que existen entre dos archivos.

Para esas tareas siempre había usado Kompare, pero esta vez he querido probar vimdiff y la verdad es que me está gustando mucho. Veamos cómo usarlo.

Este artículo es una nueva entrega del curso “improVIMsado” que desde hace meses vengo publicando en mi blog sobre el editor Vim y que puedes seguir en estos enlaces:

Y para aprender Vim (de la manera más inteligente) aquí tienes esta útil guía:

Con vimdiff puedes comparar dos, tres o cuatro archivos. En mi caso y en el ejemplo vamos a comparar únicamente las diferencias entre dos archivos. En el ejemplo compararemos un archivo llamado capítulo1.md que me han enviado por correo con otro con el mismo nombre que tengo en un repositorio git en una carpeta.

Para ello ejecutamos: vimdiff <ruta/del/archivo1> <ruta/del/archivo2> de esta manera:

vimdiff capítulo1.md Git/libro/capítulo1.md

Se nos abrirá una instancia del editor Vim, con una división vertical de la pantalla. En la parte izquierda tendremos el primer archivo y en la parte derecha el segundo archivo.

Si en vez de una división vertical, que es la opción predeterminada, queremos una división horizontal de la pantalla de comparación de archivos, deberemos añadir la opción o de esta forma:

vimdiff -o capítulo1.md Git/libro/capítulo1.md

De manera predeterminada, en vimdiff no se cortan las líneas de texto al final de la pantalla, por lo que si es una línea de texto larga, se mostrará toda seguida, cosa que a mí no me gusta.

Para que vimdiff nos ajuste la longitud de las líneas de texto al ancho de la pantalla y la continúe en la línea siguiente, yo he añadido en mi archivo de configuración .vimrc lo siguiente:

" ajusta la longitud de las líneas a la pantalla en vimdiff
au VimEnter * if &diff | execute 'windo set wrap' | endif

Bueno, abiertos ambos archivos en Vim, con el cursor en una parte de la pantalla podemos ir navegando por el texto hasta encontrar una zona donde vimdiff nos mostrará las diferencias que ha encontrado entre ambos archivos.

Podemos desplazarnos con las teclas y comandos de movimiento de Vim y ambos textos se desplazarán de manera sincronizada o podemos navegar entre las diferencias con los comandos ]c para ir a la siguiente diferencia o [c para ir a la diferencia anterior.

El cursor lo podemos situar en cualquiera de las dos divisiones, para ello igual que en Vim, podemos «saltar» de una a otra división con Ctrl+W W

Una vez situado el cursor sobre una de las diferencias en la ventana que queramos, podemos revisar el texto resaltado que nos muestra las diferencias y editar el archivo en cuestión (cualquiera de los dos) tal como haríamos en vim.

Pero si lo que queremos es una vez revisadas las diferencias, incorporar las modificaciones de uno u otro archivo en el archivo contrario, tenemos los comandos diffput y diffget Veamos cómo usarlos.

Imaginemos que tenemos el cursor en la división de la izquierda en una diferencia entre ambos archivos y después de revisarlos vemos que queremos hacer que el archivo en el que está el cursor incorpore las diferencias del otro archivo, para eso ejecutaremos diffget

Ahora imaginemos que queremos que la diferencia del archivo en el que tenemos el cursor se aplique en el otro archivo, para eso ejecutaremos diffput

Cuando hayamos de revisar todas las diferencias, ya podremos salir de vimdiff pero antes deberemos guardar los cambios que hemos realizado en los archivo, para eso como en Vim, podremos hacerlo mediante :wqa O el método que prefieras (ZZ, :x, o !qa si queremos salir sin guardar los cambios)

Al igual que en Vim, si hemos hecho un cambio ya sea con diffget o diffput siempre podremos revertirlo mediante el comando u y volverlo a rehacer con Ctrl+R

Si no conocías la herramienta, te recomiendo darle una oportunidad a la hora de comparar archivos con los comandos vistos en el tutorial y comprobar lo sencillo y potente que es vimdiff

Me gustaría saber tu opinión. Deja un comentario (Puedes usar MarkDown)

Introduce tus datos o haz clic en un icono para iniciar sesión:

Logo de WordPress.com

Estás comentando usando tu cuenta de WordPress.com. Salir /  Cambiar )

Imagen de Twitter

Estás comentando usando tu cuenta de Twitter. Salir /  Cambiar )

Foto de Facebook

Estás comentando usando tu cuenta de Facebook. Salir /  Cambiar )

Conectando a %s

Este sitio usa Akismet para reducir el spam. Aprende cómo se procesan los datos de tus comentarios.