diff characterwise

9

¿Existe una herramienta estable (opción / complemento de una herramienta existente: vimdiff, diff, etc.) en Linux para hacer diff entre dos archivos de texto en forma de caracteres?

Me gustaría ver la subsecuencia común más larga entre mis dos archivos resaltados. Para eso hay un algoritmo clásico de tiempo polinómico , pero las herramientas estándar parecen funcionar solo línea por línea.

Valentas
fuente

Respuestas:

2

Lo bueno cmphace una diferencia de carácter. Ha sido parte de UNIX durante aproximadamente 40 años. https://www.freebsd.org/cgi/man.cgi?query=cmp&apropos=0&sektion=0&manpath=Unix+Seventh+Edition&arch=default&format=html

Desafortunadamente, se detiene en el primer carácter diferente, por lo que no sé si esta respuesta es útil para usted.

Dominik R
fuente
Gracias. Acabo de ejecutar un cmp -bl ...después de encontrar esta respuesta e informó múltiples diferencias y sus posiciones. Mi versión es cmp (GNU diffutils) 3.6.
Dzamo Norton
2

Instalar diffchar( enlace de Github para aquellos que usan un cargador automático de complementos). Desde v4.7, con el complemento habilitado, Vim muestra automáticamente diferencias más exactas:

ingrese la descripción de la imagen aquí

  • Puede presionar F7(el mapa de teclas predeterminado) para alternar entre el habitual y el complemento. Reasignar con:

    nmap <silent> <key> <Plug>ToggleDiffCharAllLines
    

    reemplazando <key>con un código clave apropiado.

  • Puedes usar más colores:

    let g:DiffColors=100
    

Desafortunadamente, esto no funciona entre líneas, lo mejor que puedo decir. Sin embargo, las regiones comunes se dejan sin resaltar (y se pliegan, si crecen demasiado), por lo que es posible que pueda aprovechar eso.


Copiado de mi publicación de Vi y Vim Stack Exchange .

muru
fuente