Porovnání souborů
Existence svislých oken ve vim 6 mne sama o sobě do transu nepřivedla, ale umožnila jednu moc pěknou vychytávku: porovnání souborů. Určitě už jste byli v situaci, kdy máte dvě verze téhož souboru. Podle času změny sice víte, která je novější, ale nejste si tak úplně jisti, v čem se vlastně liší, a neradi byste o něco přišli. Chtělo by to nástroj pro vzájemné porovnání.
Takových nástrojů je celá řada. V Unixu diff a jeho grafické
verze, v MS-DOSu fc. Ovšem žádný z nich se mi nelíbil tolik, jako
porovnávání ve vim. Nyní stačí zadat příkaz
vimdiffsoubor1soubor2
případně
gvimdiffsoubor1soubor2
pokud dáváte přednost grafické verzi. Objeví se zhruba toto:
Jak vidíte, obě verze jsou přehledně umístěny vedle sebe a jejich odlišnosti barevně vyznačeny. Vim zároveň využívá schopnosti skládání a složí nezajímavé (stejné) části textu, aby vám zůstaly na očích především změny.
Mezi jednotlivými odlišnostmi se můžete snadno pohybovat. Příkaz ]c přesune kurzor na začátek následující změny a příkaz
[c jej vrátí na začátek změny předchozí.
Můžete také odstraňovat nalezené rozdíly. Nejjednodušším způsobem je
přesunout kurzor na některou odlišnost a použít příkaz dp nebo do. První z nich
(mnemotechnika: Diff Put) přepíše odpovídající řádky protějšího souboru obsahem
editovaného souboru, aby změna označená kurzorem zmizela. Druhý (mnemotechnika:
Diff Obtain) dělá to samé, ale v opačném směru. Přepíše část editovaného souboru
obsahem protějšího souboru.
Totéž dělají řádkové příkazy :diffput a
:diffget. Jedná se o běžné ex-příkazy,
takže jim rozmezím řádků lze zadat, které části souboru se mají týkat.
Například :%diffput pokryje celý soubor, vim upraví řádky
protějšího souboru tak, aby se celý shodoval s editovaným. Neurčíte-li řádky,
zpracují odlišnost označenou kurzorem, stejně jako příkazy dp a do.
Ovšem tyto služby už nejsou tak atraktivní. To nejdůležitější na porovnávání je vědět a tuto službu plní vim velmi dobře.
© 2026 Pavel Satrapa
