Het programma diff (in Linux onderdeel van het pakket GNU diffutils vergelijkt bestanden regel per regel, en dat is voor veel configuratiebestanden goed genoeg. Een regel die met < begint toont dan de regel in het eerste bestand, en een regel die met > begint dezelfde maar verschillende regel in het tweede bestand.

Toch is dit niet zo heel overzichtelijk, zelfs niet als je de bestanden met de optie -y naast elkaar laat tonen. Zeker als de wijzigingen slechts in één enkel woord zitten of als het niet om regelgebaseerde configuratiebestanden maar om doorlopende teksten gaat, is het overzicht vlug zoek. Gelukkig bestaan er voor die gevallen betere alternatieven.

Vimdiff

Voor wie de editor Vim gewend is, is er een handige optie voor wat meer overzicht: vimdiff. Geef je twee bestandsnamen als argumenten op, dan worden beide bestanden verticaal naast elkaar getoond. Met de optie -o gebeurt dit horizontaal. Identieke regels worden opgevouwen zodat ze niet in de weg staan. Regels die in één bestand staan maar niet in het andere worden in het lichtblauw getoond, en in het andere bestand wordt op dezelfde plaats een regel met streepjes getoond. En regels die in beide bestanden verschillen, worden in roze getoond, met de feitelijke verschillen in het rood.

Met de toetsen ]c spring je naar het volgende verschil en met [c naar het vorige. Met de toetsen do voer je de wijzigingen in het andere bestand ook in het huidige bestand toe en met dp gaat dat in de andere richting. En met Ctrl+W Ctrl+W kun je tussen beide vensters wisselen en andere toetsencombinaties van Vim werken natuurlijk ook.

Je kunt overigens best de syntaxiskleuring uitschakelen wanneer je vimdiff gebruikt, omdat daarin wel eens dezelfde kleuren kunnen voorkomen, wat verwarrend is. Dat kan met de volgende commando's in je .vimrc:

if &diff

syntax off

endif

Wdiff en colordiff

Als de verschillen klein zijn in een doorlopende tekst, bijvoorbeeld als bepaalde woorden, cijfers en dergelijke veranderd zijn, zie je echter zowel met diff als met vimdiff nog altijd niet in één oogopslag dat ene woord dat verschilt. Hiervoor komt wdiff weer heel goed van pas, waarvan nog maar pas versie 1.0 uitgekomen is. Deze tool is niet regelgebaseerd, maar woordgebaseerd.

Geef je twee bestandsnamen als argumenten op, dan toont wdiff de toevoegingen in het tweede bestand tussen {+...+} en de stukken die uit het eerste bestand verwijderd zijn tussen [-...-]. Met de optie -t worden die speciale codes achterwege gelaten: toevoegingen worden dan invers getoond en verwijderingen onderlijnd. Er is ook nog dwdiff, dat net zoals wdiff woordgebaseerd is, maar nog meer is te fine-tunen.

Verder is er ook colordiff. Dit werkt als drop-in vervanger van diff maar toont de regels van het eerste bestand in het rood en de regels van het tweede bestand in het blauw. Colordiff verstaat echter ook de uitvoer van wdiff, en dus kun je die pipen naar colordiff, tenminste als je de optie -n van wdiff gebruikt om correct met newlines om te gaan. De ultieme vergelijkingstool voor in de terminal wordt dan iets zoals:

$ wdiff -n bestand1 bestand2|colordiff

Kortom, dankzij vimdiff, wdiff en colordiff kun je dus in één oogopslag de verschillen tussen bestanden zien.