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.

Andra kommandoradsväljare
För att se alla tillgängliga kommandoradsväljare, skriv

kdiff3 --help

Exempel på utmatning:

Väljare:
  -m, --merge               Sammanfoga indata.
  -b, --base file           Explicit basfil. För att fungera tillsammans med vissa verktyg.
  -o, --output file         Utdatafil. Betyder underförstått -m. T.ex.: -o ny_fil.txt
  --out file                Utdatafil, igen. (för att fungera med vissa verktyg.)
  --auto                    Inget grafiskt gränssnitt om alla konflikter kan lösas automatiskt (kräver -o fil)
  --qall                    Lös inte konflikter automatiskt. (För att fungera med andra verktyg...)
  --L1 alias1               Synlig ersättning av namn för indatafil 1 (bas).
  --L2 alias2               Synlig ersättning av namn för indatafil 2.
  --L3 alias3               Synlig ersättning av namn för indatafil 3.
  -L, --fname alias         Alternativ synlig ersättning av namn. Ange detta en gång för all indata.
  --cs string               Överskrid en inställning. Använd en gång för varje inställning, t.ex.  --cs "AutoAdvance=1"
  --confighelp              Visa lista med inställningar och nuvarande värden.
  --config file             Använd en annan inställningsfil.

Väljaren -cs låter dig justera ett inställningsalternativ som annars bara kan justeras via inställningsdialogrutorna. Men var medveten om att när KDiff3 avslutas lagras det ändrade värdet tillsammans med andra inställningar. Med --confighelp kan du ta reda på namnen på tillgängliga alternativ och nuvarande värden.
Via --config kan du ange en annan inställningsfil. Om du ofta använder KDiff3 med helt olika inställningar låter det dig enkelt byta mellan dem.

Kommandoradsväljare som ignoreras
Många personer vill använda KDiff3 tillsammans med något versionshanteringssystem, men när versionshanteringssystemet anroppar KDiff3 med kommandoradsväljare som KDiff3 inte känner igen, avslutas KDiff3 med ett fel. Integrationsinställningarna gör det möjligt att ange kommandoradsväljare som ska ignoreras av KDiff3. De visas i användningshjälpen som i det här exemplet:

--väljare                     Ignoreras. (anvädardefinierad)

Kommandoradsväljare att ignorera:	En lista med väljare, åtskilda med semikolon ';'. När en av dessa väljare finns på kommenderaden, ignorerar KDiff3 den och kör utan att rapportera ett fel. (Förval är "u;query;html;abort").
Om det inte är nog, rekommenderas du att skriva ett skalskript som gör översättningen av väljare.

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äljes via filbläddraren ("Fil...") eller att senast använda filer väljes 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.
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.

Jämföra filer och tolka informationen i indatafönstren

Informationsrad
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.
När du väljer en annan fil genom att bläddra eller avslutar redigera filnamnet här genom att trycka på returtangenten, laddas den nya filen och jämförs med filen eller filerna som redan är laddade.

Färgläggning
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 menyn Inställningar.)
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).

Sammanfattningskolumn
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. När radbrytning är aktiverad visas den vertikala linjen med punkter för brutna rader.

Översiktskolumn
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.

Justera rader manuellt
Ibland placerar algoritmen fel rader intill varandra, eller så vill du jämföra ett textstycke med text på en helt annan position i den andra filen. I dessa fall kan du manuellt tala om för KDiff3 att vissa rader ska arrangeras i rak linje. Markera texten som du vill arrangera med musen, som du skulle göra vid kopiera och klistra in, i det första jämförelsefönstret och välj därefter "Lägg till manuell justering av jämförelse" i menyn "Jämförelsevy" (snabbtangenten "Ctrl+Y"). En orange rad visas i sammanfattningskolumnen intill den markerade texten. Upprepa det för den andra och (om tillgänglig) tredje jämförelsevyn. KDiff3 beräknar omedelbart om jämförelsen varje gång du gör det, och radar upp de markerade raderna. Naturligtvis kanske några av raderna som tidigare matchade inte längre matchar.
För närvarande stöder inte sammanfogning användning av manuell hjälp vid jämförelse.

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äljes 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äljes C. 

Sammanfattningskolumnen
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.

Ställa in aktuell grupp och synkronisera sammanfognings- och jämförelsevyns position
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.

Välja indata A, B eller C för aktuell konflikt och redigering
Knappraden under menyraden innehåller tre knappar för indataval som innehåller bokstäverna "A", "B" och "C". Klicka på knappen för indataval för att infoga rader (eller ta bort dem om de redan infogats) från respektive källfil. För att välja rader från flera indatafiler klicka på respektive knappar i nödvändig ordning. Om du till exempel vill att rader från "B" ska hamna före rader från "A" i utdata, klicka först på "B" och därefter på "A".
Om du använder alternativet för att automatiskt gå vidare (Gå automatiskt till nästa olösta konflikt efter val av källa), måste du inaktivera det innan du väljer rader från flera indatafiler eller om du vill redigera raderna efter du valt dem. Annars går KDiff3 till nästa konflikt efter den första indatafilen valts.
Det är ofta användbart att direkt redigera sammanfogad utdata. Sammanfattningskolumnen visar "m" för varje rad som ändrades manuellt. När skillnaderna till exempel justeras på ett sätt så att ett enkelt val av indata inte är tillfredsställande, kan du markera texten som behövs och använda normal kopiera och klistra in för att placera den i sammanfogad utdata.
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 på 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.

Välja indata A, B eller C för alla konflikter
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äljes 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.

Sammanfoga automatiskt nyckelord för versionshantering och historik (logg)
Many version control systems support special keywords in the file. (e.g. "$Date$", "$Header$", "$Author$", "$Log$" etc.) During the check-in the version control system (VCS) changes these lines. For instance "$Date$" will turn into "$Date$". Since this line will be different in every version of the file, it would require manual interaction during the merge.
KDiff3 erbjuder automatisk sammanfogning av dessa poster. För enkla rader som matchar alternativet "Reguljärt uttryck för automatisk sammanfogning" i alla indatafiler väljer KDiff3 raden från B, eller om tillgänglig, den från C. (Dessutom är det nödvändigt att raderna i fråga radas upp i jämförelsen och att föregående rad inte innehåller en konflikt.) Den automatiska sammanfogningen kan antingen utföras omedelbart när sammanfogningen startas (aktivera alternativet "Kör automatisk sammanfogning med reguljärt uttryck när sammanfogning startar") eller senare via "Kör automatisk sammanfogning med reguljärt uttryck" i menyn Sammanfoga.
Automatisk sammanfogning för versionshanteringshistorik (också kallat "logg") stöds också. Automatisk sammanfogning av historik kan antingen utföras omedelbart när sammanfogningen startas genom att aktivera alternativet "Sammanfogning enligt versionshanteringshistorik när sammanfogning startar" eller senare via "Lös automatiskt historikkonflikter" i menyn Sammanfoga.
Oftast börjar versionshanteringshistoriken med en rad som innehåller nyckelordet "$Log$". Den måste matchas av alternativet "Reguljärt uttryck för historikens början". KDiff3 detekterar vilka efterföljande rader som ingår i historiken genom att analysera de inledande tecknen som fanns före nyckelordet "$Log$". Om samma "inledande kommentar" också finns på följande rader inkluderas de också i historiken.
Vid varje arkivering skriver VCS en unik rad som anger version, datum- och tidsinformation följd av rader med användarens kommentarer. Raderna utgör en historikpost. Historikavsnittet växer vid varje arkivering och de senaste posterna visas längst upp (efter historikens startrad).
När två utvecklare arkiverar grenar av en fil under parallell utveckling, kommer historiken för sammanfogning att innehålla flera poster som visas som konflikter under sammafogning av grenarna. Eftersom sammafogning av dem kan bli mycket tröttsam, erbjuder KDiff3 stöd för den med två möjliga strategier: Bara infoga historikinformationen från båda bidragsgivarna längst upp, eller sortera historikinformationen enligt en användardefinierad nyckel.
Metoden att bara infoga alla poster är enklast att ställa in. KDiff3 behöver bara en metod att detektera vilka rader som hör till en historikpost. De flesta VCS infogar en tom rad efter varje historikpost. Om det inte finns några andra tomma rader, är det ett tillräckligt villkor för KDiff3. Ange bara en tom "Reguljärt uttryck för historikens början". Om kriteriet med en tom rad inte är tillräckligt kan du ange ett reguljärt uttryck för att detektera historikpostens början.
Observera att KDiff3 tar bort duplicerade historikposter.Om en historikpost fanns flera gånger i en indatafils historik, förblir bara en post i utmatningen.
Om du vill sortera historiken måste du ange hur sorteringsnyckeln ska byggas. Använd parenteser som i "Reguljärt uttryck för historikpostens början" för att gruppera delar av det reguljära uttrycket som senare ska användas i sorteringsnyckeln. Ange därefter "Sorteringsnycklarnas ordning från historikpostens början" med en lista av nummer som refererar till gruppens position i det reguljära uttrycket åtskilda av kommatecken ",".
Eftersom det inte är så enkelt att få det rätt omedelbart, kan du prova och förbättra det reguljära uttrycket och nyckelgenereringen i en särskild dialogruta genom att klicka på knappen "Prova dina reguljära uttryck".
Antag att historiken ser ut så här:

/**************************************************************************
** HISTORIK:    $Log: \toms_sammanfogning_huvudvy\Mitt_program\kod\komplexalgoritm.cpp $
**
**     \head\integreringsgren_12   2 Apr 2001 10:45:41   tom
**  Sammanfogade grenen simongren_15.
**
**     \main\henry_felrättningsgren_7\1   30 Mar 2001 19:22:05   henry
**  Förbättrade hastigheten för delrutinen omvandlaTill().
**  Fixade krasch.
**************************************************************************/

Historikens inledande rad matchar det reguljära uttrycket ".*\$Log.*\$.*". Därefter följer historikposterna.
Raden med nyckelordet "$Log$" börjar med två "*" och därefter följer ett mellanslag. KDiff3 använder den första strängen utan blanktecken som "inledande kommentar" och antar att historiken slutar med den första raden utan denna inledande kommentar. I exemplet slutar den sista raden med en sträng som också börjar med två "*", men istället för ett mellanslag följer fler "*". Därför avslutar denna rad historiken.
Om sortering av historiken inte krävs kan det reguljära uttrycket för historikpostens början se ut så här. (Raden är delad i två eftersom den inte skulle få plats annars.)

\s*\\main\\\S+\s+[0-9]+ (Jan|Feb|Mar|Apr|May|Jun|Jul|Aug|Sep|Oct|Nov|Dec)
 [0-9][0-9][0-9][0-9] [0-9][0-9]:[0-9][0-9]:[0-9][0-9]\s+.*

För detaljinformation om reguljära uttryck se Trolltechs dokumentation av reguljära uttryck. Observera att "\s" (med ett litet "s") matchar alla blanktecken och "\S" (med ett stort "S") matchar alla tecken som inte är blanktecken. I vårt exempel innehåller historikpostens början först versionsinformation med det reguljära uttrycket "\\main\\\S+", datumet som består av dagen "[0-9]+", månaden "(Jan|Feb|Mar|Apr|May|Jun|Jul|Aug|Sep|Oct|Nov|Dec)" och året "[0-9][0-9][0-9][0-9]", tiden "[0-9][0-9]:[0-9][0-9]:[0-9][0-9]" och till sist utvecklarens inloggningsnamn ".*". Observera att den inledande kommentaren (i exemplet "**") redan har tagits bort av KDiff3 innan matchningsförsöket, därför börjar det reguljära uttrycket med en matchning av en eller flera blanktecken "\s*".
Om du kräver sorterad historik måste sorteringsnyckeln beräknas. För att göra det måste relevanta delar i det reguljära uttrycket grupperas med parenteser. (De extra parenteserna kan också vara kvar även om historiksortering inaktiveras.)

\s*\\main\\(\S+)\s+([0-9]+) (Jan|Feb|Mar|Apr|May|Jun|Jul|Aug|Sep|Oct|Nov|Dec)
 ([0-9][0-9][0-9][0-9]) ([0-9][0-9]:[0-9][0-9]:[0-9][0-9])\s+(.*)

Parenteserna innehåller nu 1. versionsinformation, 2. dag, 3. månad, 4. år, 5. tid, 6. namn. Men om vi vill sortera enligt datum och tid måste vi skapa en nyckel med elementen synliga i en annan ordning: Först året, följt av månad, dag, tid, versionsinformation och namn. Därför ska sorteringsnyckelns ordning som anges vara "4,3,2,5,1,6".
Eftersom månadsnamn inte är bra att sortera enligt ("Apr" skulle vara först) detekterar KDiff3 vilken ordning månadsnamnen anges och använder det numret istället ("Apr"->"04"). Och om ett rent nummer hittas omvandlas det till ett fyrasiffrors värde med inledande nollor för sortering. Till sist blir den resulterande sorteringsnyckeln för den första historikpostens inledande rad:

2001 04 0002 10:45:41 integreringsgren_12   tom

För mer information, se också Inställningar av jämför och sammanfoga.

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. Sammanfattningskolumnen intill indatafilernas vertikala rullningslist kan också användas för att navigera genom att klicka i den.
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 Ställa in aktuell grupp och synkronisera sammanfognings- och jämförelsevyns position).
Verktygsraden innehåller också nio 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östa konflikter".

Automatisk fortsättning
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äljes. 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: Är du trött på många klick? Använd en kort fördröjning vid automatisk fortsättning och snabbtangenterna Ctrl+1/2/3 för att välja A/B/C 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 skifttangenten och navigera med piltangenterna.
Om markeringen överstiger det synliga området, kan du flytta musen över fönsterkanterna, vilket gör att KDiff3 rullar i den riktningen.
För mycket stora markeringar kan du också använda navigationstangenterna medan musknappen hålls nere. Använd t.ex. Page Up och Page Down för att snabbt gå till en viss position. Släpp upp musknappen på slutpositionen.
För att markera allt i det nuvarande fönstret, använd menyn "Redigera" -> "Markera allt" (Ctrl+A).
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 aktiverat, 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.
"Klistra in" (Ctrl+V eller Skift+Insert) infogar texten på klippbordet vid markörens position eller istället för den nuvarande markeringen. Om du klistrar in i något av jämförelsefönstren visas klippbordets innehåll i fönstret och jämförelsen startas omedelbart om. Det är användbart om du snabbt vill hämta ett textstycke någonstans och jämföra det med något annat utan att först skapa filer.

Spara
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.

Utskrift
KDiff3 stöder utskrift av skillnader mellan textfiler. Kommandot "Skriv ut..." (Ctrl+P) i menyn Arkiv visar en dialogruta som låter dig välja skrivare och justera andra alternativ.
Det finns flera möjligheter att justera intervallet. Beroende på olika utskriftsdialogrutor på olika operativsystem, varierar metoden för att åstadkomma val av ett visst intervall.
Alla:	Skriv ut allt.
Aktuell:	Skriv ut en sida som börjar på den första synliga raden i fönstret. (På system utan alternativet kan det åstadkommas genom att ange sidnumret 10000 för utskrift.)
Markering:	Innan du väljer att skriva ut, markera text med musen (som för kopiera och klistra in) i ett av jämförelsefönstren för att definiera start- och slutrad. Om ingen text var markerad i något av jämförelsefönstren, är inte alternativet tillgängligt. (På system utan alternativet kan det åstadkommas genom att ange sidnumret 9999 för utskrift.)
Intervall:	Ange första och sista sidan.
Andra viktiga inställningar för utskrift tas från de normala inställningarna:
Teckensnitt, teckenstorlek
Visa radnummer
Radbryt
Färger
etc.
Liggande formatering rekommenderas också för utskrift.

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ärg för manuellt valda jämförelseintervall:	Oftast orange.
Färg för nyaste fil i katalogjämförelse:	Oftast grön.
Färg för äldsta fil i en katalogjämförelse:	Oftast röd.
Färg för medelgamla filer i en katalogjämförelse:	Oftast mörkgul.
Färg för saknade filer i en katalogjämförelse:	Oftast svart.
Att ändra färgerna för katalogjämförelser får inte någon effekt förrän nästa katalogjämförelse startas.
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" en ren färg.

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.
Radslutstil:	När du sparar kan du välja vilken radslutsstil du föredrar. Förvald inställning är det vanliga valet för operativsystemet som används.

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.
Ignorera skiftläge:	Normalvärdet är av. Ändringar i skiftläge för tecken (som 'A' eller 'a') hanteras som ändringar i blanktecken.
Preprocessorkommando:	Se nästa avsnitt.
Radmatchande preprocessorkommando:	Se nästa avsnitt.
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 menyn Sammanfoga. 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.
Reguljärt uttryck för automatisk sammanfogning:	Reguljärt uttryck för rader där KDiff3 automatisk ska välja en källa. Se också Automatisk sammanfogning ...
Kör automatisk sammanfogning med reguljärt uttryck när sammanfogning startar:	Om aktiverad utför KDiff3 den automatiska sammanfogningen med "Reguljärt uttryck för automatisk sammanfogning" när en sammanfogning startas.
Reguljärt uttryck för historikens början:	Reguljärt uttryck för början av historikposten för sammanfogning. Oftast innehåller raden nyckelordet "$Log$". Förvalt värde: ".*\$Log.*\$.*"
Reguljärt uttryck för historikpostens början:	En historikpost för sammanfogning består av flera rader. Ange det reguljära uttrycket för att detektera den första raden (utan inledande kommentar). Använd parenteser för att gruppera nycklarna du vill använda för sortering. Om det lämnas tomt, antar KDiff3 att tomma rader skiljer historikposterna åt. Se också Automatisk sammanfogning ...
Sortering av historiksammanfogning:	Aktivera sortering av versionshanteringshistorik.
Sorteringsnycklarnas ordning från historikpostens början:	Varje parentes som används i det reguljära uttrycket för historikens startpost grupperar en nyckel som kan användas för sortering. Ange listan med nycklar (som numreras i ordning de uppträder med början på 1) med ',' som skiljetecken (t.ex. "4,5,6,1,2,3,7"). Om det lämnas tomt utförs ingen sortering. Se också Automatisk sammanfogning ...
Sammanfogning enligt versionshanteringshistorik när sammanfogningen startar:	Om aktiverad utför KDiff3 den automatiska sammafogningen av historik med tidigarenämnda alternativ när en sammanfogning startas.
Prova dina reguljära uttryck	Knappen visar en dialogruta som låter dig förbättra och prova det reguljära uttrycket ovan. Kopiera bara respektive data från dina filer till exempelraderna. "Matchningsresultat" visar omedelbart om matchningen lyckas eller inte. "Sorteringsnyckelresultat" visar nyckeln som används för sortering vid sammanfogning av historik.
Ej relevant sammanfogningskommando:	Ange ett eget kommando som ska anropas när KDiff3 detekterar att filen från B inte bidrar med något relevant data som inte reda finns i filen från C. Kommandot anropas med de tre filnamnen som parametrar. Data som matchas av "Reguljärt uttryck för automatisk sammanfogning" eller i historiken anses inte vara relevant.

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.

Inställningar för region och språk
Språk:	Justera användargränssnittets språk. Att ändra alternativet påverkar inte programmet som kör. Du måste avsluta och starta om KDiff3 för att ändra språk. (Alternativet är inte tillgängligt i KDE-versionen av KDiff3, eftersom språket kan justeras i de allmänna KDE-inställningarna.)
Använd samma kodning för allt:	Följande kodningsalternativ kan justeras separat för varje objekt, eller om alternativet är sant, ställs alla värden in till det första värdet.
Lokal kodning:	Ovanför kodningsväljarna visas en anmärkning som talar om för dig vad den lokala kodningen är (Den kan inte justeras, utan bara som information om du inte vet vad den lokala kodningen är, men behöver kunna välja den.)
Filkodning för A/B/C:	Justera filkodningen för indatafiler. Det ger effekt på hur specialtecken tolkas. Eftersom du kan justera varje kodning separat, kan du till och med jämföra och sammanfoga filer som sparades med olika kodningar.
Filkodning för sammanfogad utdata och vid spara:	När du har redigerat en fil, kan du justera vilken kodning som används när den sparas till disk.
Filkodning för preprocessorfiler:	När du definierar preprocessorer kanske de inte kan hantera din kodning (exempelvis om dina filer använder 16-bitars Unicode och preprocessorn bara kan hantera 8-bitars ASCII). Med det här alternativet kan du definiera kodningen för preprocessorns utdata.
Språk som läses från höger till vänster	Vissa språk skrivs från höger till vänster. När alternativet är aktiverat, ritar KDiff3 text från höger till vänster i jämförelsefönstren och i sammanfogningsfönstret. Observera att om du startar KDiff3 med kommandoradsväljaren "--reverse" så visas all layout också från höger till vänster. (Det är en funktion som Qt tillhandahåller.) Denna dokumentation är skriven med antagandet att "Språk som läses från höger till vänster" eller omvänd layout inte är aktiverade. Vissa referenser till "vänster" eller "höger" måste ersättas av motsatsen om du använder alternativen.

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.)
Översiktsalternativ:	Dessa alternativ är bara tillgängliga när du jämför tre filer. I normalläge visas alla skillnader i en färgkodad översiktskolumn, men ibland är du särskilt intresserad av skillnaderna mellan två av de tre filerna. Genom att välja översikten "A mot B", "A mot C" eller "B mot C", visas en andra översiktskolumn med begärd information intill den vanliga översikten.
Radbryt skillnadsfönster:	Radbryt rader när deras längd skulle överskrida ett fönsters bredd.
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 menyn Fönster.)
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 menyn Fönster.)
Starta sammanfogning snabbt:	Ibland tittar du på skillnader, och bestämmer dig för att sammanfoga. "Sammanfoga aktuell fil" i menyn Katalog 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...)

Preprocessorkommandon
KDiff3 stöder två preprocessoralternativ.
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.
Radmatchande preprocessorkommando:	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 den radmatchande preprocessorn. 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.
Idén är att ge användaren större flexibilitet när jämförelseresultatet ställs in, men det kräver ett externt program, och många användare vill inte skriva ett själva. De goda nyheterna är att ofta klarar sed eller perl av jobbet.
Till exempel ett enkelt fall att prova: Betrakta filen a.txt (6 rader):

      aa
      ba
      ca
      da
      ea
      fa

Och filen b.txt (3 rader):

      cg
      dg
      eg

Utan en preprocessor skulle följande rader placeras intill varandra:

      aa - cg
      ba - dg
      ca - eg
      da
      ea
      fa

Det är troligen inte vad som önskas eftersom den första bokstaven innehåller den intressanta informationen. För att hjälpa matchningsalgoritmen att ignorera den andra bokstaven kan man använda ett radmatchande preprocessorkommando som ersätter 'g' med 'a':

   sed 's/g/a/'

Med det kommandot blir resultatet av matchningen:

      aa
      ba
      ca - cg
      da - dg
      ea - eg
      fa

Internt ser matchningsalgoritmen filerna efter den radmatchande preprocessorn har körts, men på skärmen är filen oförändrad. (Den normala preprocessorn skulle också ändra data på skärmen.)

Grundläggande information om sed
Det här avsnittet introducerar bara några mycket grundläggande funktioner i sed. För mer information se info:/sed eller http://www.gnu.org/software/sed/manual/html_mono/sed.html. En förkompilerad version för Windows finns på http://unxutils.sourceforge.net. Observera att följande exempel antar att sed finns i någon katalog i miljövariabeln PATH. Om det inte är fallet, måste du ange fullständig absolut sökväg till kommandot.
Observera också att följande exempel använder enkla citationstecken ('), vilket inte fungerar i Windows. I Windows ska du istället använda dubbla citationstecken (").
I det här sammanhanget används bara ersättningskommandot i sed:

   sed 's/REGUTTRYCK/ERSÄTTNING/FLAGGOR'

Innan du använder ett nytt kommando inne i KDiff3, bör du först prova det i en terminal. Då är kommandot echo användbart. Till exempel:

   echo abrakadabra | sed 's/a/o/'
   -> obrakadabra

Exemplet visar ett mycket enkelt sed-kommando som ersätter den första förekomsten av "a" med "o". Om du vill ersätta alla förekomster behöver du flaggan "g":

   echo abrakadabra | sed 's/a/o/g'
   -> obrokodobro

Symbolen "|" är rörledningskommandot som överför utdata från föregående kommando till indata i efterföljande kommando. Om du vill prova med en längre fil kan du använda cat på Unix-liknande system eller type på Windows-liknande system. sed utför ersättningen för varje rad.

cat filnamn |sed väljare

Exempel på användning av sed i KDiff3

Ignorera andra typer av kommentarer
För närvarande förstår KDiff3 bara C/C++ kommentarer. Genom att använda ett radmatchande preprocessorkommando kan du också ignorera andra typer av kommentarer genom att konvertera dem till C/C++ kommentarer. För att till exempel ignorera kommentarer som börjar med "#", skulle du vilja konvertera dem till "//". Observera att du också måste aktivera alternativet "Ignorera C/C++ kommentarer" för att få någon effekt. Ett lämpligt radmatchande preprocessorkommando skulle vara:

   sed 's/#/\/\//'

Eftersom tecknet "/" har en särskild betydelse i sed, är det nödvändigt att lägga till tecknet "\" innan varje "/" i ersättningssträngen. Ibland behövs "\" för att lägga till eller ta bort en särskild betydelse för vissa tecken. De enkla citationstecknen (') innan och efter ersättningskommandot är nu viktiga, eftersom skalet annars skulle försöka tolka vissa specialtecken som '#', '$' eller '\' innan de skickas till sed. Observera att i Windows behöver du dubbla citationstecken (") här. Windows ersätter andra tecken som '%', så du kan behöva experimentera något.

Jämförelse som inte är skiftlägeskänslig
Använd följande radmatchande preprocessorkommando för att omvandla all indata till stora bokstäver:

   sed 's/\(.*\)/\U\1/'

Här är ".*" ett reguljärt uttryck som matchar alla strängar, och i det här sammanhanget matchar alla tecken på raden. Tecknet "\1" i ersättningssträngen motsvarar den matchade texten mellan det första paret "\(" och "\)". "\U" konverterar den infogade texten till stora bokstäver.

Ignorera nyckelord för versionshantering
CVS och andra versionshanteringssystem använder flera nyckelord för att infoga automatiskt skapade strängar (info:/cvs/Keyword substitution). Alla följer mönstret "$NYCKELORD skapad text$". Nu behöver vi ett radmatchande preprocessorkommando som bara tar bort den skapade texten:

   sed 's/\$\(Revision\|Author\|Log\|Header\|Date\).*\$/\$\1\$/'

Strängen "\|" skiljer de möjliga nyckelorden åt. Du kanske vill ändra listan enligt dina behov. Tecknet "\" framför "$" behövs eftersom annars matchar "$" radens slut.
Medan du experimenterar med sed kan du komma att förstå och till och med tycka om de reguljära uttrycken. De är användbara eftersom det finns många andra program som också stöder liknande funktioner.

Ignorera siffror
Att ignorera siffror är i själva verket ett inbyggt alternativ, men som ett annat exempel, visas hur det skulle se ut som ett radmatchande preprocessorkommando.

   sed 's/[0123456789.-]//g'

Alla tecken inom '[' och ']' matchar och kommer att ersättas av ingenting.

Ignorera vissa kolumner
Ibland är texten mycket strikt formaterad, och innehåller kolumner som du alltid vill ignorera, medan det finns andra kolumner du vill bevara för analys. I följande exempel ignoreras de fem första kolumnerna (tecknen), de följande tio kolumnerna bevaras, därefter ignoreras återigen fem kolumner och resten av raden bevaras.

   sed 's/.....\(..........\).....\(.*\)/\1\2/'

Varje punkt '.' motsvarar vilket enstaka tecken som helst. Strängarna "\1" och "\2" i ersättningssträngen refererar till den matchande texten inom det första och andra paret av "\(" och "\)" som anger texten att bevara.

Kombinera flera ersättningar
Ibland vill du tillämpa flera ersättningar samtidigt. Då kan du använda semikolon ';' för att skilja dem från varandra. Till exempel:

echo abrakadabra | sed 's/a/o/g;s/\(.*\)/\U\1/'
   -> OBROKODOBRO

Använda perl istället för sed
Istället för sed kanske du vill använda något annat som perl.

   perl -p -e 's/REGUTTRYCK/ERSÄTTNING/FLAGGOR'

Men vissa detaljer är annorlunda i perl. Observera att där sed behöver "\(" och "\)" kräver perl det enklare "(" och ")" utan inledande '\'. Till exempel:

sed 's/\(.*\)/\U\1/'
   perl -p -e 's/(.*)/\U\1/'

Ordning vid körning av preprocessor
Data skickas igenom all intern och extern förbehandling i följande ordning:
Normal preprocessor,
Preprocessor för radmatchning,
Ignorera skiftläge (konvertering till stora bokstäver),
Detektering av C/C++ kommentarer,
Ignorera siffror,
Ignorera blanktecken
Data efter den normala förbehandlingen bevaras för att visas och sammanfogas. De andra åtgärderna ändrar bara data som algoritmen för radmatchande jämförelse ser.
I de sällsynta fall då du använder normal förbehandling, observera att den radmatchande förbehandlingen ser utdata från den normala förbehandlingen som indata.

Varning
Förbehandlingskommandon är ofta mycket användbara, men som med alla alternativ som ändrar texten eller döljer vissa skillnader automatiskt, kan du av misstag hoppa över vissa skillnader och i värsta fall förstöra viktig data.
Av denna orsak, om ett normalt preprocessorkommando används under en sammanfogning, talar KDiff3 om det för dig och frågar om det ska inaktiveras eller inte. Men du får ingen varning om ett radmatchande preprocessorkommando är aktivt. Sammanfogningen sker inte förrän alla konflikter är lösta. Om du inaktiverade "Visa blanktecken" blir också skillnaderna som togs bort med det radmatchande preprocessorkommandot osynliga. Om knappen Spara förblir inaktiv under en sammanfogning (på grund av kvarvarande konflikter), försäkra dig om att aktivera "Visa blanktecken". Om du inte vill sammanfoga dessa mindre viktiga skillnader för hand kan du välja "Välj [A|B|C] för olösta konflikter med blanktecken" i menyn "Sammanfoga".