Dokumentation av filjämförelse och sammanfogning

Kommandoradsväljare

Jämföra två filer:

kdiff3 fil1 fil2

Sammanfoga två filer:

kdiff3 fil1 fil2 -m
   kdiff3 fil1 fil2 -o utdatafil

Jämföra tre filer:

kdiff3 fil1 fil2 fil3

Sammanfoga tre filer:

kdiff3 fil1 fil2 fil3 -m
   kdiff3 fil1 fil2 fil3 -o utdatafil

Observera att fil1 behandlas som bas för fil2 och fil3.

Specialfall: Filer med samma namn
Om alla filer har samma namn men finns i olika kataloger, kan du reducera hur mycket du måste skriva genom att bara ange filnamnet för den första filen. T.ex:

kdiff3 kat1/filnamn kat2 kat3

Kommandorad för att starta en katalogjämförelse eller sammanfogning:
Det här är mycket likt, men nu handlar det om kataloger.

kdiff3 kat1 kat2
   kdiff3 kat1 kat2 -o målkat
   kdiff3 kat1 kat2 kat3
   kdiff3 kat1 kat2 kat3 -o målkat

För katalogjämförelse och sammanfogning kan du fortsätta att läsa här.

För mer information om kommandoradsväljare, använd:

kdiff3 --help

Dialogrutan Öppna
Eftersom många indatafiler måste kunna väljas, har programmet en särskild öppningsdialogruta:
Öppningsdialogrutan tillåter att filnamnen redigeras för hand, att en fil väljs via filbläddraren ("Fil...") eller att senast använda filer väljs i kombinationsrutan. Om du öppnar dialogrutan igen, finns de nuvarande namnen fortfarande där. Den tredje indatafilen krävs inte. Om fältet för "C" förblir tomt, görs bara en tvåvägs jämförelseanalys.
Du kan också välja en katalog med "Katalog...". Om en katalog anges för A, startar en katalogjämförelse och sammanfogning. Om A anger en fil, men B, C eller utmatningen anger en katalog, använder KDiff3 filnamnet från A i de angivna katalogerna.
Om "Sammanfoga" är valt, blir raden "Utmatning" redigerbar. Det krävs dock inte att utdatafilens namn anges omedelbart. Du kan också vänta med detta till du sparar.
Knappen "Anpassa" visar inställningsdialogrutan, så att du kan ställa in alternativ innan analysen utförs.

Klistra in eller släpp indata
Ibland vill du jämföra delar av en text som inte är en egen fil. KDiff3 låter dig också klistra in text från klippbordet i det indatafönster för jämförelse som har fokus. Jämförelseanalysen sker då omedelbart. I öppningsdialogrutan behöver du då inte ange filer, utan bara stänga den via "Avbryt".
Du kan också använda drag och släpp: Dra en fil från en filhanterare eller markerad text från en editor och släpp den på ett indatafönster för jämförelse.
Vad är idén? Ibland innehåller en fil två liknande funktioner, men att kontrollera hur lika de verkligen är blir en stor ansträngning om du först måste skapa två filer och sedan ladda dem. Nu kan du helt enkelt kopiera, klistra in och jämföra de relevanta avsnitten.
Observera: För närvarande kan du inte dra någonting från KDiff3. Bara att släppa indata i jämförelsefönstret stöds.
Varning: Vissa editorer tolkar fortfarande drag och släpp till ett annat program som klipp ut (istället för kopiera) och klistra in. Ditt ursprungliga data kan då gå förlorat.

Tolka informationen i indatafönstren
Längst upp i varje textfönster finns dess "informationsrad". Informationsraderna i indatafönstret innehåller bokstaven "A", "B" eller "C", filnamnet och radnumret för den första synliga raden i fönstret. (Observera att fönstret "C" är valfritt.) Varje informationsrad visas i en egen färg. (Om sökvägarna är för långa för att få plats, kan du flytta musen till informationsraden och ett verktygstips visar hela namnet.)
De tre indatafönstren tilldelas bokstäverna "A", "B" och "C". "A" har blå färg, "B" har grön färg och "C" har magenta. (Det är förvalda färger, men de kan ändras via inställningsmenyn.)
När en skillnad upptäcks visar färgen vilken indatafil som skiljer sig åt. När båda övriga indatafiler skiljer sig åt, är färgen som används för att uttrycka det normalt röd ("Konfliktfärg" i inställningarna). Det här färgläggningsschemat är särskilt användbart i fallet med tre indatafiler, som syns i nästa avsnitt (Sammanfogning).
Till vänster om varje text är "sammanfattningskolumnen". Om skillnader uppstod på en rad, visar sammanfattningskolumnen motsvarande färg. För en skillnad som bara består av blanktecken är sammanfattningen kryssad. För programspråk, där blanktecken inte är så viktiga är det användbart för att se med en blick om något av vikt ändrades. (För C/C++ är blanktecken bara intressanta inne i strängar, i kommentarer, för preprocessorn och i några mycket esoteriska situationer.)
Den vertikala linjen som skiljer sammanfattningskolumnen och texten är avbruten om indatafilen inte har några rader där.
På höger sida är en "översiktskolumn" synlig till vänster om den vertikala rullningslisten. Den visar en komprimerad sammanfattning av indata "A". Alla skillnader och konflikter är synliga med en blick. När bara två indatafönster används, syns alla skillnader i rött här, eftersom alla skillnader också är konflikter. En svart rektangel ramar in den synliga delen av indata. För mycket långa indatafiler, där antalet indatarader är större än höjden på översikten i bildpunkter, delar flera indatarader en översiktsrad. En konflikt har prioritet över enkla skillnader, som har prioritet över inga ändringar, så att inga skillnader eller konflikter går förlorade här. Genom att klicka på översiktskolumnen visas motsvarande text.

Sammanfogning och editorfönstret för sammanfogningsutdata
Editorfönstret för sammanfogningsutdata (under indatafönstren för jämförelse) har också en informationsrad längst upp som visar "Utmatning", filnamnet och "[Ändrad]" om du redigerat något. Oftast innehåller det någon text från de automatiska sammanfogningsfunktionerna, men det innehåller också ofta konflikter.
!!! Spara är inaktiverat till alla konflikter är lösta !!! (Använd knapparna "Gå till föregående/nästa olösta konflikt" för att hitta återstående konflikter.)
Med bara två filer är varje skillnad också en konflikt, som måste lösas manuellt.
Med tre indatafiler behandlas den första som bas, medan den andra och tredje indatafilen innehåller ändringar. Om bara indata B eller C har ändrats för en viss rad, men inte båda väljs den ändrade källan automatiskt. Bara om B och C har ändrats på samma rader, detekterar verktyget en konflikt som måste lösas manuellt. När B och C är likadana, men inte samma som A, väljs C. 
Editorfönstret för sammanfogningsutdata har också en sammanfattningskolumn till vänster. Den visar bokstaven för indata som raden valdes, eller ingenting om alla tre källorna var likadana för raden. Vid konflikter visar den ett frågetecken "?" och raden visar "< Konflikter vid sammanfogning >", allt med rött. Eftersom det skulle ta mycket lång tid att lösa konflikter rad för rad, grupperas rader i grupper som har samma skillnader och konfliktkaraktär. Konflikter med bara blanktecken skiljs dock från andra konflikter för att förbättra sammanfogningen av filer där indenteringen ändrats på många rader.
När du klickar på sammanfattningskolumnen med vänster musknapp i endera fönstret, så markeras gruppen som hör till den raden i alla fönster och gruppens början visas. (Det här kan innebära ett automatiskt byte av position i fönstren om gruppens början inte syns.) Gruppen blir då den "aktuella gruppen". Den markeras med "Bakgrundsfärgen för aktuellt jämförelseintervall" och en svart rad visas till vänster om texten.
Observera knapparna för indataval som innehåller bokstäverna "A", "B" och "C" i verktygsraden under menyraden. När du klickar på någon av knapparna för indataval, läggs raderna från den indatakällan till sist i markerad grupp, om gruppen inte redan innehöll den källan. Annars tas raderna från den indatakällan bort.
Dessutom kan du redigera vilken rad som helst. Sammanfattningskolumnen visar "m" för varje rad som har ändrats.
Ibland, när en rad tas bort antingen på grund av automatisk sammanfogning eller genom redigering och inga andra rader finns kvar i gruppen, visas texten <Ingen källrad> på raden. Det är bara en platsmarkör för gruppen om du ändrar dig och väljer en källa igen. Texten syns inte i sparade filer eller i några markeringar som du vill kopiera och klistra in.
Texten "< Konflikter vid sammanfogning >" visas i klippbordet om du kopierar och klistrar in någon text som innehåller en sådan rad. Men var ändå försiktig med att göra det.
Den normala sammanfogningen börjar med att automatiskt lösa enkla konflikter. Menyn "Sammanfoga" tillhandahåller också några alternativ för andra vanliga behov. Om du måste välja samma källfil för de flesta konflikter, kan du välja "A", "B" eller "C" överallt, eller bara för återstående olösta konflikter, eller för olösta konflikter med blanktecken. Om du vill bestämma själv för varje enskild skillnad, kan du "Ändra skillnader till konflikter", eller om du vill återgå till de automatiska valen i Kdiff3 kan du välja "Lös automatiskt enkla konflikter". Då startar Kdiff3 om sammanfogningen. För åtgärder som påverkar dina tidigare ändringar frågar Kdiff3 om bekräftelse innan åtgärden utförs.
Observera: När endera källan väljs för olösta konflikter för blanktecken och alternativet "Ignorera siffror" eller "Ignorera C/C++ kommentarer" används, så behandlas ändringar i siffror eller kommentarer också som blanktecken.

Navigering och redigering
Mycket navigering görs med rullningslisterna och musen, men du kan också navigera med tangentbordet. Om du klickar på något fönster kan du använda markörtangenterna vänsterpil, högerpil, uppåtpil, neråtpil, Page Up, Page Down, Home, End, Ctrl+Home och Ctrl+End som du kan i andra program.
Du kan också använda hjulmusen för att rulla uppåt och neråt.
I editorn för sammanfogningsutdata kan du också använda andra tangenter för redigering. Du kan byta mellan infognings- och ersättningsläge med tangenten Insert. (Normalläget är infoga.)
Ett klick med vänster musknapp i någon sammanfattningskolumn synkroniserar alla fönster för att visa början på samma grupp av rader (som förklaras i avsnittet Sammanfogning).
Verktygsraden innehåller också sju navigeringsknappar som du kan använda för att gå till aktuell/första/sista skillnaden, till nästa/föregående skillnad (Ctrl+Neråtpil eller Ctrl+Uppåtpil), till nästa/föregående konflikt (Ctrl+Page Down eller Ctrl+Page Up) eller till nästa/föregående olösta konflikt. Observera att för KDiff3 förblir en "konflikt" som inte automatiskt löstes vid start av sammanfogningen alltid en "konflikt" även om den är löst. Därav nödvändigheten att särskilja "olöst konflikt".
Det finns också en knapp som heter "Gå automatiskt till nästa olösta konflikt efter val av källa" (automatisk fortsättning). Om du aktiverar det här, så går KDiff3 automatiskt till nästa olösta konflikt när en källa väljs. Det kan hjälpa till när du bara vill välja en källa. När du behöver båda källor, eller du vill redigera efter valet, bör du troligen stänga av det här. Innan KDiff3 fortsätter till nästa olösta konflikt, visas effekten av valet en kort tid. Den här fördröjningen kan justeras i inställningarna under Jämför och sammanfoga. Du kan ange "Fördröjning vid automatisk fortsättning" i millisekunder mellan 0 och 2000. Tips: Trött på många klick? Använd en kort fördröjning och snabbtangenterna Ctrl+1, Ctrl+2 eller Ctrl+3 för många konflikter.

Markera, kopiera och klistra in
Indatafönstren visar inte någon markör, så markeringar måste göras med musen, genom att klicka med vänster musknapp på början, hålla nere musknappen och gå till slutet, där musknappen släpps upp igen. Du kan också markera ett ord genom att dubbelklicka på det. I editorn för sammanfogningsutdata kan du också markera med tangentbordet, genom att hålla nere tangenten "Skift" och navigera med piltangenterna.
För att kopiera till klippbordet måste du trycka på knappen "Kopiera" (Ctrl+C eller Ctrl+Insert). Men det finns ett alternativ som heter "Kopiera automatiskt markering". Om det är markerat, kopieras vad du än väljer omedelbart, och du behöver aldrig explicit kopiera. Men var försiktig när du använder detta, eftersom klippbordets innehåll kan förstöras av misstag.
"Klipp ut" (Ctrl+X eller Skift+Delete) kopierar till klippbordet och tar bort den markerade texten, och "Klistra in" (Ctrl+V eller Skift+Insert) infogar texten från klippbordet på markörens position eller över nuvarande markering.

Sparar
Att spara tillåts bara när alla konflikter är lösta. Om filen redan finns och alternativet "Säkerhetskopiera filer" är markerat, ändras originalversionens namn med tillägg av filändelsen ".orig", och om en sådan fil redan finns tas den bort. När du avslutar eller startar en ny jämförelseanalys och data inte sparats ännu, frågar KDiff3 om du vill spara, avbryta eller fortsätta utan att spara. (KDiff3 fångar inga signaler, så om du "dödar" KDiff3 går data förlorat.)
Radslut sparas enligt den normala metoden i det underliggande operativsystemet. För Unix slutar varje rad med ett nyradstecken "\n", medan för Windows-baserade system slutar varje rad med ett returtecken och ett nyradstecken "\r\n". KDiff3 behåller inte radslut för indatafilerna, vilket också betyder att du inte ska använda KDiff3 med binärfiler.

Söka efter strängar
Du kan söka efter en sträng i vilket textfönster som helst i KDiff3. Kommandot "Sök..." (Ctrl+F) i menyn Redigera, visar en dialogruta som låter dig ange strängen att söka efter. Du kan också välja de fönster som ska sökas. Sökning startar alltid från början. Använd kommandot "Sök igen" (F3) för att fortsätta till nästa förekomst. Om du väljer att söka i flera fönster, söks det första fönstret från början till slut innan sökningen fortsätter från början i nästa fönster, etc.

Alternativ
Alternativ och listan med senaste filer sparas när du avslutar programmet, och laddas igen när du startar det. (Menyn Inställningar -> Anpassa KDiff3...)

Teckensnitt
Välj ett teckensnitt med fast breddsteg. (På vissa system visar dialogrutan också teckensnitt med variabel bredd, men du bör inte använda dem.)
Kursiv stil för skillnader:	Om du markerar detta, visas textskillnader med kursiv version av det valda teckensnittet. Om teckensnittet inte stöder kursiv stil, gör det ingenting.

Färger
Förgrundsfärg:	Oftast svart.
Bakgrundsfärg:	Oftast vit.
Bakgrundsfärg för jämförelse:	Oftast ljusgrå.
Färg A:	Oftast mörkblå.
Färg B:	Oftast mörkgrön.
Färg C:	Oftast mörk magenta.
Konfliktfärg:	Oftast röd.
Bakgrundsfärg för aktuellt intervall:	Oftast ljusgul.
Bakgrundsfärg för aktuellt jämförelseintervall:	Oftast mörkgul.
För system med bara 16 eller 256 färger är vissa rena färger inte tillgängliga. För sådana system väljer knappen "Förval" rena färger.

Inställningar för editor
Tabulator infogar mellanslag:	Om det här inte är markerat, och du trycker på tabulatortangenten, infogas en tabulator, annars infogas lämpligt antal mellanslag.
Tabulatorbredd:	Kan justeras för dina speciella behov. Normalvärdet är 8.
Automatisk indentering:	När du trycker på Enter eller returtangenten, används föregående rads indentering för den nya raden.
Kopiera automatiskt markering:	Varje markering kopieras omedelbart till klippbordet när den aktiveras, och du behöver inte kopiera den explicit.
Använd lokal kodning:	För att visa främmande tecken. Försök ändra det här om vissa tecken i språket du använder inte visas riktigt.

Inställningar av jämför och sammanfoga
När filer jämförs försöker KDiff3 först att matcha rader som är lika i alla indatafiler. Det är bara under detta steg som blanktecken kan ignoreras. Det andra steget jämför varje rad. Under detta steg ignoreras inte blanktecken. Under sammanfogning ignoreras inte heller blanktecken.
Behåll returtecken:	Vissa editorer (på vissa system) sparar returtecken '\r' och nyradstecken '\n' i slutet på raden, medan andra bara sparar nyradstecknet '\n'. Oftast ignorerar KDiff3 returtecknet, men då ser filer som inte har samma storlek likadana ut vid jämförelse sida vid sida. När det här alternativet är markerat, görs returtecken synliga, men behandlas som blanktecken. Det här alternativet måste vara av under en sammanfogning. Normalvärdet är av.
Ignorera siffror:	Normalvärdet är av. Siffertecken ('0'-'9','.', '-') ignoreras under första delen av analysen när radmatchningen görs. Skillnaderna för resultatet visas ändå, men de behandlas som blanktecken.
Ignorera C/C++ kommentarer:	Normalvärdet är av. Ändringar i kommentarer behandlas som ändringar i blanktecken.
Konvertera till stora bokstäver:	Normalvärdet är av. Konverterar indata till stora bokstäver under läsning. Alltså är jämförelsen inte skiftlägeskänslig. Var försiktig under sammanfogning, eftersom skiftlägesinformationen också går förlorad i sammanfogningsresultatet.
Preprocessorkommando:	När en fil läses, skickas den via det här externa kommandot. Utmatningen från kommandot visas istället för den ursprungliga filen. Du kan skriva din egen preprocessor som uppfyller dina speciella behov. Använd det här för att ta bort störande delar av filen, eller för att automatiskt korrigera indenteringen, etc.
Preprocessorkommando för radmatchning:	När en fil läses, skickas den via det här externa kommandot. Om ett preprocessorkommando (se ovan) också anges är utmatningen från preprocessorn inmatning till kommandot för radmatchning. Utmatningen används bara under radmatchningsfasen av analysen. Du kan skriva din egen preprocessor som uppfyller dina speciella behov. Varje indatarad måste ha en motsvarande utdatarad.
Var noggrann:	Gör en ansträngning att hitta en ännu mindre skillnad (Normalvärdet är på). Det här är troligen effektivt för komplicerade och stora filer, och långsamt för mycket stora filer.
Fördröjning vid automatisk fortsättning (ms):	I automatiskt fortsättningsläge anger den här inställningen hur länge resultatet för gruppen ska visas innan hopp till nästa olösta konflikt.
Standardvärde för sammanfogning av blanktecken med två/tre filer:	Lös automatiskt alla konflikter för blanktecken genom att välja angiven fil. (Normalvärdet är manuellt val.) Användbart om blanktecken verkligen är oviktiga i många filer. Om du bara behöver det ibland, är det bättre att använda "Välj A/B/C för olösta konflikter med blanktecken" i sammanfogningsmenyn. Observera att om du antingen aktiverar "Ignorera siffror" eller "Ignorera C/C++ kommentarer" gäller det automatiska valet också vid konflikter för siffror eller kommentarer.

Katalogsammanfogning
De här alternativen har att göra med avsökning av katalogen och hantering av sammanfogningen: Se Katalogjämförelse och sammanfogning för detaljinformation.
Ändå finns det ett alternativ här som också är relevant för att spara enstaka filer:
Säkerhetskopiera filer:	När en fil sparas och en äldre version redan finns, ändras originalversionens namn med tillägg av filändelsen ".orig". Om en gammal säkerhetskopia med filändelsen "orig" redan finns tas den bort utan säkerhetskopiering.

Diverse
(Dessa alternativ och åtgärder är tillgängliga i menyerna eller verktygsraden.)
Visa radnummer:	Du kan välja om radnummer ska visas för indatafilerna.
Visa mellanslag och tabulatortecken i jämförelse:	Ibland är synliga mellanslag och tabulatortecken störande. Du kan stänga av detta.
Visa blanktecken:	Stäng av det här för att inte visa ändringar av bara blanktecken i texten eller översiktskolumnerna. (Observera att detta också gäller ändringar av siffror eller kommentarer om alternativen "Ignorera siffror" eller "Ignorera C/C++ kommentarer" är aktiva.)
Visa fönster A/B/C:	Ibland vill du använda skärmutrymmet bättre för långa rader. Dölj fönster som inte är viktiga. (I fönstermenyn.)
Byt delningsorientering:	Byt mellan jämförelsefönster som visas intill varandra (A till vänster om B till vänster om C) eller ovanför varandra (A ovanför B ovanför C). Det bör också hjälpa för långa rader. (I fönstermenyn.)
Starta sammanfogning snabbt:	Ibland tittar du på skillnader, och bestämmer dig för att sammanfoga. "Sammanfoga markerade filer" i menyn Sammanfoga fungerar också om du bara jämför två filer. Ett enkelklick startar sammanfogningen och använder filnamnet på den sista indatafilen som förvalt utmatningsfilnamn. (När detta används för att starta om en sammanfogning, behålls utmatningsfilnamnet.)

Anpassa snabbtangenter
För närvarande stöder bara KDE-versionen anpassningsbara snabbtangenter (Menyn Inställningar -> Anpassa genvägar...)