Failide võrdlemise ja ühendamise seletused

Käsurea võimalused

Kahe faili võrdlemine:

kdiff3 fail1 fail2

Kahe faili ühendamine:

kdiff3 fail1 fail2 -m
   kdiff3 fail1 fail2 -o väljundfail

Kolme faili võrdlemine:

kdiff3 fail1 fail2 fail3

Kolme faili ühendamine:

kdiff3 fail1 fail2 fail3 -m
   kdiff3 fail1 fail2 fail3 -o väljundfail

Pane tähele, et fail1 kujutab endast baasi fail2 ja fail3 jaoks.

Erijuhtum: ühenimelised failid
Kui kõigil failidel on sama nimi, aga nad asuvad erinevates kataloogides, võib kirjutamisvaeva vähendada, andes ainult esimese faili nime. Näiteks:

kdiff3 kataloog1/failinimi kataloog2 kataloog3

Kataloogide võrdlemine või ühendamine käsureal:
See käib samamoodi, ainult et tegu on kataloogidega.

kdiff3 kataloog1 kataloog2
   kdiff3 kataloog1 kataloog2 -o sihtkataloog
   kdiff3 kataloog1 kataloog2 kataloog3
   kdiff3 kataloog1 kataloog2 kataloog3 -o sihtkataloog

Kataloogide võrdlemisest ja ühendamisest saab täpsemalt lugeda siit.

Rohkem infot käsurea võtmete kohta annab käsk:

kdiff3 --help

Avamisdialoog
Et mitme sisendfaili korral nad lihtsalt peavad olema valitavad, on rakendusel eriline avamisdialoog:
Avamisdialoog võimaldab redigeerida failinimesid käsitsi, valida need failidialoogis ("Fail...") või kasutada hüpikmenüüs olevaid hiljuti avatud faile. Kui avad dialoogi uuesti, on seal kirjas parajasti aktiivsed failinimed. Kolmanda sisendvälja täitmine ei ole kohustuslik. Kui "C" tühjaks jätta, analüüsitakse ainult kahe faili erinevusi.
Nupule "Kataloog..." klõpsates saab valida kataloogi. Kui A jaoks on määratud kataloog, saab alustada kataloogide võrdlemist-ühendamist. Kui A on fail, kuid B, C või väljund kataloogid, kasutab KDiff3 A failinime määratud kataloogides.
Kui märkida "Ühenda", saab kasutada ka välja "Väljund". Siiski ei ole nõutav väljundfaili nime kohe määrata, selle võib edasi lükata ka salvestamise ajale.
Klõps nupule "Seadista..." avab valikute dialoogi, kus saab enne analüüsi midagi muuta, kui pead seda vajalikuks.

Sisendi asetamine ja lohistamine
Vahel võib tekkida vajadus võrrelda tekstilõke, mis ei kujuta endast omaette faile. KDiff3 võimaldab väga lihtsalt asetada teksti lõikepuhvrist parajasti fookuses olevasse võrdlemise sisendaknasse. Võrdlusanalüüs algab kohe seejärel. Avamisdialoogis ei ole sellisel juhul vajalik määrata faile, vaid selle võib kohe sulgeda klõpsuga nupule "Loobu".
Samuti võib kasutada lohistamist: lohista fail failihalduris või valitud tekst redaktorist ning kukuta see võrdlemise sisendaknasse.
Milleks see heea on? Mõnikord võib fail sisaldada kaht sarnast funktsiooni, kuid kontrollimine, kui sarnased nad ikkagi on, võib olla päris tülikas, kui sa pead näiteks kõigepealt looma kaks faili ja siis nad mõlemad avama. Nüüd aga on võimalik vajalikud osad lihtsalt kopeerida, asetada ja võrdlemine võibki alata.
Märkus: praegu ei ole võimalik midagi KDiff3-st välja lohistada, toetatud on ainult lohistamine võrdlemise sisendaknasse.
Hoiatus: mõned redaktorid tõlgendavad lohistamist muusse rakendusse mitte kopeerimise, vaid lõikamisena. See tähendab, et sa võid kaotada oma esialgsed andmed.

Info tõlgendamine sisendaknas
Iga tekstiakna ülaservas asub "inforiba". Sisendakende inforibal seisab täht "A", "B" või "C", failinimi ning aknas esimesena näha oleva rea number. (Pane tähele, et akent "C" ei pruugi olemas olla.) Iga inforiba on erinevat värvi. Kui näiteks failinimi on liiga pikk, et ära mahtuda, võib hiire viia riba kohale ning näha täielikku nime ilmuval kohtspikril.
Kolmele sisendaknale on omistatud tähed "A", "B" ja "C". "A" värviks on sinine, "B" roheline ja "C" magenta. Need on vaikeväärtused, mida saab muuta seadistustemenüüst.
Erinevuse avastamisel näitab värv, milline sisendfail erineb. Kui erinevad mõlemad sisendfailid, siis väljendab seda vaikimisi punane värv (seadistuste kohaselt "konflikti värv"). Värviskeem tuleb eriti kasuks kolme sisendfaili korral, mida võib näha järgmises osas (Ühjendamine).
Igast tekstist vasakul asub "kokkuvõttetulp". Kui real on erinevusi, näitab kokkuvõttetulp vastavat värvi. Ainult tühimärkide erinevuse korral on kokkuvõttetulbal näha ruuduline muster. See on abiks programmeerimiskeelte korral, kus tühimärkidel ei ole erilist tähendust, võimaldades ühe hetkega tuvastada, kas on ka mingeid olulisi muudatusi (näiteks C/C++ korral on tühimärkidel mingi roll ainult stringides, kommentaarides, preprotsessoris ja veel mõnel äärmiselt esoteerilisel juhtumil).
Kokkuvõttetulpa ja teksti lahutav püstjoon on katkestatud, kui sisendfailis pole selles kohas ühtki rida.
Paremal on otse kerimisriba kõrval näha "ülevaateriba". See näitab kokkusurutult sisendfaili "A" kokkuvõttetulpa. Nii on kõik erinevused ja konfliktid korraga näha. Kui kasutada ainult kaht sisendakent, on kõik erinevused punased, sest iga erinevus on sellisel juhul ju ka konflikt. Must ristkülik tähistab parajasti aknas näha olevat tekstiosa. Väga pikkade sisendfailide korral, kus sisendi ridade arv on suurem kui ülevaatetulba kõrgus pikslites, mahutatakse ühele ülevaatereale mitu sisendirida. Konflikti näitamist eelistatakse sellisel juhul tavalisele erinevusele ning viimast muutmata olekule, nii ei jää kindlasti nägemata ükski erinevus või konflikt. Ülevaateribale klõpsates näidatakse vastavat kohta tekstis.

Ühendamine ja ühendamisväljundi redigeerimisaken
Ka ühendamisväljundi redigeerimisaknal (allpool võrdlemise sisendaknaid) on ülaservas inforiba, kus seisab "Väljund:", failinimi ja "[Muudetud]", kui oled midagi muutnud. Tavaliselt leidub seal automaatse ühendamise vahendite pakutav tekst, kuid tihtipeale ka konfliktid.
!!! Salvestamine on võimalik alles siis, kui kõik konfliktid on lahendatud !!! (allesjäänud konfliktide lahendamiseks kasuta nuppe "Liigu eelmisele/järgmisele lahendamata konfliktile")
Kui on ainult kaks sisendfaili, on iga erinevus ühtlasi konflikt, mis tuleb käsitsi lahendada.
Kolme sisendfaili korral käsitletakse esimest baasina, teist ja kolmandat aga potentsiaalseid muudatusi sisaldavate failidena. Kui muudetud on rida ainult sisendis B või C, aga mitte mõlemas, valitakse automaatselt muudetud allikas. Kui aga nii B kui C on (erinevalt) muutnud üht ja sama rida, märgitakse see konfliktina, mis tuleb käsitsi lahendada. Kui B ja C on ühesugused, aga erinevad A-st, valitakse C.
Ka ühendamisväljundi redigeerimisaknal on vasakus servas kokkuvõtteriba. See näitab sisendi tähte, millest rida on valitud, või mitte midagi, kui rida on kõigis kolmes allikas võrdne. Konflikti korral on seal küsimärk "?" ning real endal seisab "<Ühendamise konflikt>, kõik ilusasti puust ja punaseks tehtud. Kuna konfliktide lahendamine rida-realt võib võtta päris palju aega, on read rühmitatud gruppidesse, millel on ühesugused erinevuse ja konflikti omadused. Samas on ainult tühimärkide konfliktid eraldatud muudest konfliktidest, et hõlbustada selliste failide ühendamist, kus taanet on muudetud paljudel ridadel.
Kui klõpsata hiire vasaku nupuga kokkuvõttetulbal mis tahes aknas, siis valitakse selle rea grupp kõigis akendes ning näidatakse antud grupi algust (see võib kaasa tuua automaatse asukohavahetuse akendes, kui grupi algus ei ole parajasti näha). Valitud grupp muutub sellega "aktiivseks grupiks", see tõstetakse esile "praeguse vahemiku tausta värviga" ning tekstist vasakule ilmub must tulbake.
Pane tähele tähtedega "A", "B" ja "C" sisendivalija nuppe menüüriba all. Mõnele neist klõpsates lisatakse selle sisendi read valitud grupi lõppu, kui grupp ei sisaldanud varem seda allikat. Vastasel juhul eemaldatakse selle allika read.
Lisaks saab vahetult redigeerida mis tahes rida. Kokkuvõttetulp näitab tähte "m" iga muudetud rea kohta.
Vahel võib juhtuda, et rida eemaldatakse automaatse liitmisega või redigeerides. Kui grupi ei ole jäänud enam ühtki rida, ilmub sellele reale tekst <Lähterida puudub>. See on kõigest grupi kohatäitja juhuks, kui muudad meelt ja valid taas mõne allika. Seda teksti ei ole näha ei salvestatud failis ega kopeeritavates/asetatavates valikutes.
Tekst <Ühendamise konflikt> seevastu liigub küll lõikepuhvrisse, kui valida ja kopeerida/asetada sellist rida sisaldav tekst. Seepärast tasuks sellise võimalusega ettevaatlik olla.
Menüü "Ühendamine" sisaldab teatud toiminguid, mis võimaldavad valida "A", "B" või "C" enam-vähem kõikjal. Kui valida "Lahenda automaatselt lihtsad konfliktid", taaskäivitab KDiff3 ühendamise ja lahendab nii palju konflikte, kui ta vähegi suudab ja oskab. "Määra erinevused konfliktideks" teeb aga täpselt vastupidist: isegi lihtsad konfliktid tuleb sellisel juhul käsitsi lahendada. Kõigi nende toimingute korral kaotatakse varasemad käsitsi tehtud valikud (KDiff3 hoiatab sellest muidugi ette ja küsib enne jätkamist sinu käest kinnitust).

Liikumine ja redigeerimine
Enamasti saab liikuda kerimisribade ja hiirega, kuid soovi korral on võimalik liikuda ka klahvidega. Kui klõpsata mis tahes aknasse, saab sarnaselt muude rakendustega kasutada noolenuppe, Page Up ja Page Down, Home, End, CTRL+Home, CTRL+End. Liikumiseks saab kasutada ka sisendafailide kerimisribast paremal pool asuvat ülevaateriba, mis võimaldab vajalikule kohale liikuda klõpsuga riba vajalikule kohale.
Üles-alla kerimiseks saab kasutada ka hiireratast.
Ühndamisväljundi redigeerimisaknas saab samuti kasutada kõiki tavalisi teksti redigeerimisel kasutatavaid klahve. Klahviga Insert saab lülitada lisamis- ja ülekirjutamisrežiimi (vaikimisi kehtib lisamisrežiim).
Klõps hiire vasaku nupuga mis tahes kokkuvõttetulbal sünkroniseerib kõik aknad, nii et neid näitavad üht ridadegruppi (seda selgitas lähemalt osa Ühendamine).
Nupureal on seitse liikumisnuppu, millega saab hüpata praegusele/esimesele/viimasele erinevusele, eelmisele/järgmisele erinevusele (CTRL+Nool üles/CTRL+Nool alla), eelmisele/järgmisele konfliktile (CTRL+Page Down/CTRL+Page Up) või eelmisele/järgmisele lahendamata konfliktile. Pane tähele, et KDiff3 jaoks jääb "konflikt", mida ei lahendata automaatselt ühendamise alguses, "konfliktiks" ka pärast selle käsitsi lahendamist. Seepärast on ka eristatud "lahendamata konfliktid".
Lisaks neile on nupp "Pärast allikavalikut liigu automaatselt järgmisele lahendamata konfliktile". Seda sisse lülitades hüppab KDiff3 allika valimisel automaatsel selles leiduval lahendamata konfliktile. See on abiks, kui soovid tavaliselt valida ainult ühe allika. Kui sul läheb vaja mõlemat allikat või soovid pärast valimist tegelda redigeerimisega, on tõenäoliselt mõttekas see välja lülitada. Enne järgmisele lahendamata konfliktile liikumist näitab KDiff3 hetkeks langetatud valiku toimet. Kui kaua see näitamine kestab, saab määrata seadistustes: "automaatse edasiliikumise viivitus" on võimalik määrata millisekundites 0 ja 2000 vahel. Vihje: kas oled tüdinud kogu aeg klõpsimast? Kasuta siis pisikest automaatse edasiliikumise viivitust ning kiirklahve CTRL+1/2/3 A/B/C valimiseks.

Valimine, kopeerimine ja asetamine
Sisendaknas kursorit ei näidata, seepärast tuleb valimine teha hiirega, klõpsates vasaku nupuga valiku alguses, hoides nuppu all ja liikudes valiku lõppu, pärast mida võib nupu vabastada. Sõna saab valida ka sellel topeltklõpsu tehes. Ühendamisväljundi redigeerimisaknas saab valida ka klaviatuuri abil, hoides all klahvi SHIFT ja liikudes noolenuppudega.
Lõikepuhvrisse kopeerimiseks tuleb vajutada nuppu "Kopeeri" (CTRL+C või CTRL+Insert). Lisaks sellele on olemas ka võimalus "Valiku automaatne kopeerimine". Selle sisselülitamisel kopeeritakse kõik, mida oled valinud, automaatselt ning sul puudub vajadus anda mis tahes moel kopeerimiskäsku. Kuid ole selle võimalusega ettevaatlik, sest nii võib kogemata üle kirjutada vajaliku lõikepuhvri sisu.
Käsk "Lõika" (CTRL+X või SHIFT+Delete) kopeerib valitud teksti lõikepuhvisse ning kustutab selle, "Aseta" (CTRL+V või SHIFT+Insert) aga asetab lõikepuhvris oleva teksti kursori asukohta või aktiivse valiku asemele.

Salvestamine
Salvestamine on võimalik ainult siis, kui kõik konfliktid on lahendatud. Kui fail on juba olemas ning sisse on lülitatud valik "Failidest tehakse varukoopia", antakse olemasolevale failile laiend ".orig". Kui selline peaks juba olemas olema, see kustutatakse. Kui väljud või oled alustanud uud võrdlusanalüüsi ning andmeid ei ole veel salvestatud, pärib KDiff3 sinu käest, kas soovid salvestada, loobuda või jätkata ilma salvestamata (KDiff3 ei salvesta andmeid seesmiselt, nii et kui KDiff3 väljastpoolt "tappa", lähevad andmed kaotsi).
Realõpud salvestatakse vastavalt operatsioonisüsteemi tavale. UNIXi korral lõpetab rea reavahetusmärk "\n", Win32 süsteemides kelgu tagastamise sümbol pluss reavahetusmärk "\r\n". KDiff3 ei säilita sisendfailide realõppe, mis ühtlasi tähendab, et KDiff3 kasutamisel binaarfailidega peaks olema erakordselt ettevaatlik.

Stringide otsimine
Stringe saab otsida KDiff3 kõigis tekstiakendes. Redigeerimismenüü käsk "Otsi..." (CTRL+F) avab dialoogi, kus saab määrata, mida otsida. Samuti saab valida, millises aknas otsida. Otsimine algab alati teksti algusest. Käsk "Otsi järgmine" (F3) viib otsitava stringi järgmise esinemise juurde (kui seda muidugi on). Kui valid otsimise mitmes aknas, otsitakse esmalt ülalt alla läbi esimene aken, seejärel taas ülalt alla teine aken jne.

Valikud
Valikud ja viimati avatud failide nimekiri salvestatakse alati, kui rakendusest väljud, ning laaditakse uuesti rakenduse taaskäivitamisel (menüükäsk Seadistused -> KDiff3 seadistamine...)

Font
Valib fikseeritud laiusega fondi (mõnes süsteemis pakub dialoog ka muutuva laiusega fonti, kuid seda ei tasuks kasutada).
Kaldkiri erinevustele:	Selle valimisel näidatakse teksti erinevusi valitud fondi kaldkirjas. Kui valitud font kaldkirja ei toeta, ei tee see midagi.

Värvid
Esiplaani värv:	Tavaliselt must.
Tausta värv:	Tavaliselt valge.
Erinevuse tausta värv:	Tavaliselt helehall.
Värv A:	Tavaliselt tumesinine.
Värv B:	Tavaliselt tumeroheline.
Värv C:	Tavaliselt tume magenta.
Konflikti värv:	Tavaliselt punane.
Praeguse vahemiku tausta värv:	Tavaliselt helekollane.
Praeguse vahemiku erinevuse tausta värv:	Tavaliselt tumekollane.
Ainult 16 või 256 värviga süsteemides ei pruugi mõned värvid puhtal kujul saadaval olla. Sellistes süsteemides valib puhta värvi nupp "Vaikeväärtused".

Redaktori seadistused
TAB lisab tühikud:	Kui see ei ole sees, lisatakse tabeldusklahvile vajutades tabeldusmärk, kui see on sees, vastav kogus tühikuid.
TABi suurus:	Kohandatav oma maitsele. Vaikimisi 8.
Automaatne taandus:	Vajutades klahvile Enter, kasutatakse uuel real eelmise rea taandust.
Valiku automaatne kopeerimine:	Iga tekstivalik kopeeritakse otsekohe lõikepuhvrisse, ilma et oleks vaja anda spetsiaalset kopeerimiskäsku.

Erinevuse ja ühendamise seadistused
Faile võrreldes püüab KDiff3 kõigepealt seada kokku read, mis on kõigis sisendfailides ühtmoodi. Ainult sel etapil võib ta eirata tühimärke. Teisel etapil võrreldakse iga rida ning nüüd võetakse arvesse ka tühimärgid. Tühimärke ei ignoreerita ka ühendamisel.
Tühimärke ignoreeritakse:	Vaikimisi sees. Sellisel juhul ignoreeritakse tühimärke analüüsi esimeses osas, kus võrreldakse ridu üldiselt. Analüüsi tulemuses näidatakse siiski ka tühimärgi erinevusi igal juhul.
Säilitatakse reavahetus:	Mõned redaktorid mõnes süsteemis salvestavad iga rea lõpu kelgu tagastuse märgiga '\r' ning reavahetusmärgiga '\n', teised aga ainult reavahetusmärgiga '\n'. Üldiselt KDiff3 ignoreerib kelgu tagastuse sümbolit, kuid sellisel juhul võivad tegelikult erineva suurusega failid paista võrdlemisel ühesugustena. Selle valiku sisselülitamisel on kelgutagatusmärgid näha, kuid neid koheldakse tühimärkidena. Ühendamise ajal tuleb see võimalus välja lülitada. Vaikimisi on väljas.
Numbreid ignoreeritakse:	Vaikimisi väljas. Numbrilisi sümboleid ('0'-'9', '.', '-') ignoreeritakse analüüsi esimeses, üldvõrdlevas osas. Lõpptulemuses näidatakse siiski erinevusi, aga neid käsitletakse kui tühimärke.
Teisendatakse suurtäheliseks:	Vaikimisi väljas. Sisendi lugemise ajal muudetakse see suurtäheliseks. Sellisel juhul ei ole võrdlus tõstutundlik. Ole sellega ühendamise ajal ettevaatlik, sest nii läheb tähesuurusega seotud info kaotsi ka ühendamise tulemuses.
Eeltöötluse käsk:	Mis tahes faili lugemisel filtreeritakse see läbi siin määratud käsu. Algse faili asemel näeb siis antud käsu väljundit. Sul on võimalik panna kirja oma eeltöötluse käsk, mis rahuldaks just sinu vajadused. Kasuta seda võimalust näiteks faili ülearuste osade kõrvaldamiseks või taande automaatseks korrigeerimiseks vms.
Ridade sobivuse eeltöötluse käsk:	Mis tahes faili lugemisel filtreeritakse see läbi siin määratud käsu. Kui määratud on ka eeltöötluse käsk (vaata eespool), on eeltöötluse käsu väljund ridade sobivuse eeltöötluse käsu sisendiks. Viimase väljundit kasutatakse ainult analüüsi esimeses, reasobivuse faasis. Sul on võimalik panna kirja oma eeltöötluse käsk, mis rahuldaks just sinu vajadused. Igal sisendi real peab olema talle vastav väljundi rida.
Välise rakenduse kasutamine:	Kui sul on mõni väline võrdlusrakendus (nt. GNU-diff), saad seda kasutada reasobivuse faasis. Mõningate keerulisemate failide puhul võib see olla isegi parem kui KDiff3 seesmine algoritm.
Karm uurimine:	Edastab välisele võrdlusrakendusele võtme "--minimal", mis püüab seejärel tuvastada ka kõige pisemad erinevused. Ilmselt on sellest rohkem kasu keerulisemate ja suurte failide korral. Aga mõistagi on see väga suurte failide puhul ka väga aeglane.
Labaseid sobivusi ignoreeritakse:	Vaikimisi sees. Kui tavalised reab sobivad pärast erinevust, seda ignoreeritakse ning jätkub mittelabase sobiva rea otsing. See parandab tulemusi, kui sisendis on tühje ridu ning ridu, milles on ainult alustav või lõpetav sulg, nagu neid esineb sageli C/C++ programmides.
Otsingu maks. pikkus:	Sobivuse otsimine katkestatakse siin määratud ridade järel. Võrdlus võib ebaõnnestuda väikese väärtuse korral, kuid kesta liigagi kaua liiga suure väärtuse puhul. Vaikimisi 1000.
Automaatse edasiliikumise viivitus (ms):	Kui automaatne edasiliikumine on sisse lülitatud, määrab see võimalus, kui kaua näidatakse valiku tulemust, enne kui hüpatakse järgmisele lahendamata konfliktile.

Kataloogide ühendamine
Need valikud käivad kataloogide uurimise ja nende ühendamise kohta, millest täpsemalt räägib osa Kataloogide võrdlemise ja ühendamise seletused.
Siiski on üks valik, mis käib ka üksikfailide salvestamise kohta:
Failidest tehakse varukoopia:	Kui faili salvestamisel on sellest olemas vanem versioon, antakse viimasele laiend ".orig". Kui peaks olemas olema ka samanimeline varasem fail laiendiga ".orig", siis see kustutatakse.

Muud
(neid valikuid ja toiminguid saab kasutada menüü või nupuriba vahendusel)
Näita reanumbreid:	Võimalus valida, kas sisendfailidel näidatakse ridade numbreid.
Näita erinevusi tühiku- ja tabeldusmärkides:	Vahel võivad nähtavad tühikud ja tabeldusmärgid tõsiselt häirida, millisel juhul on võimalik nende näitamine välja lülitada.
Näita akent A/B/C:	Vahel võib tekkida tahtmine ekraanil ruumi juurde tekitada, et näha paremini näiteks pikki ridu. Sellisel juhul saab peita aknad, mis ei ole hetkel olulised (menüü Aken).
Lülita poolitamissuund:	Lülitab võrdlusakende asetsemist üksteise kõrval (A vasakul pool B ja B vasakul pool C) ning üksteise kohal (A B kohal ja B C kohal). Ka see võib olla abiks pikkade ridade korral (menüü Aken).
Kiirühendamine:	Mõnikord võib leida erinevuste vaatamisel, et käes on aeg tegelda ühendamisega. "Ühenda praegune fail" menüüs Kataloog toimib ka siis, kui sa võrdled ainult kaht faili. Ühekordne klõps käivitab ühendamise ning kasutab vaikimisi väljundifaili nimena viimase sisendfaili nime (kui seda on kasutatud ühendamise taaskäivitamiseks, väljundfaili nimi säilitatakse).

Kiirklahvide seadistamine
Praegu toetab ainult KDE versioon kasutaja võimalust määrata kiirklahve (menüükäsk Seadistused -> Kiirklahvide seadistamine...)