diff caractère

9

Existe-t-il un outil stable (option / plugin d'un outil existant: vimdiff, diff, etc.) sous Linux pour faire la différence entre deux fichiers texte par caractère?

Je voudrais voir la sous-séquence commune la plus longue entre mes deux fichiers mise en évidence. Il existe un algorithme polynomial classique pour cela, mais les outils standard semblent fonctionner uniquement ligne par ligne.

Valentas
la source

Réponses:

2

Le bon vieux cmpfait une différence de caractère. Il fait partie d'UNIX depuis environ 40 ans. https://www.freebsd.org/cgi/man.cgi?query=cmp&apropos=0&sektion=0&manpath=Unix+Seventh+Edition&arch=default&format=html

Malheureusement, cela s'arrête au premier caractère différent, donc je ne sais pas si cette réponse vous est utile.

Dominik R
la source
Merci. Je viens de courir cmp -bl ...après avoir trouvé cette réponse et elle a signalé plusieurs différences et leurs positions. Ma version est cmp (GNU diffutils) 3.6.
Dzamo Norton
2

Installer diffchar( lien Github pour ceux qui utilisent un plugin autoloader). Depuis la v4.7, avec le plugin activé, Vim affiche automatiquement des différences plus exactes:

entrez la description de l'image ici

  • Vous pouvez appuyer sur F7(le clavier par défaut) pour basculer entre l'habituel et le plugin. Réaffectez avec:

    nmap <silent> <key> <Plug>ToggleDiffCharAllLines
    

    remplacement <key>par un code clé approprié.

  • Vous pouvez utiliser plus de couleurs:

    let g:DiffColors=100
    

Malheureusement, cela ne fonctionne pas à travers les lignes, du mieux que je puisse dire. Cependant, les régions communes ne sont pas mises en surbrillance (et pliées, si elles se développent trop longtemps), vous pourrez donc en profiter.


Copié de ma publication Vi et Vim Stack Exchange .

muru
la source