Viser på Norsk Bytt til engelsk

Diff-sjekker

Lim inn to tekster og se forskjellene uthevet.

Diff

 
  1. Lim inn originalteksten i Tekst A.
  2. Lim inn den endrede versjonen i Tekst B.
  3. Velg Linjer for kode/konfig eller Ord for prosa.
  4. Slå på Ignorer mellomrom eller Ignorer store/små bokstaver hvis usynlige endringer legger til støy.
  5. Les den uthevede utdataen under — grønt er lagt til, rødt er fjernet.
Hva gjør det?

Diff-sjekkeren sammenligner to tekster og viser nøyaktig hva som ble lagt til, fjernet eller uendret. Linjer-modus behandler hver linje som en enhet — ideell for kildekode og konfigurasjon der en hel linje vanligvis endres om gangen. Ord-modus deler på mellomrom og er bedre for prosa der du bryr deg om redigeringer på token-nivå.

Eksempel

Tekst A:

function greet(name) {
  console.log("Hello, " + name);
}

Tekst B:

function greet(name) {
  if (!name) name = "world";
  console.log(`Hello, ${name}!`);
}

Diff i linjemodus:

  function greet(name) {
+   if (!name) name = "world";
-   console.log("Hello, " + name);
+   console.log(`Hello, ${name}!`);
  }

Vanlige feil og fallgruver

Når to linjer ser identiske ut, men diffen fortsatt flagger dem som endret, er årsaken nesten alltid et usynlig tegn eller en forskjell i store/små bokstaver. Her er de vanlige mistenkte.

  • CRLF vs LF linjeavslutninger. Windows-filer avslutter linjer med \r\n, Unix-filer med \n. Selv en en-tegnsforskjell flagger hver linje. Fikses ved å aktivere Ignorer mellomrom, eller normaliser med dos2unix / editorinnstillingene dine.
  • Etterstilte mellomrom. "foo " og "foo" diffes med mindre mellomrom ignoreres. En konfigfil-lagring som fjerner etterstilte mellomrom vil få hver berørt linje til å se endret ut.
  • Tabs vs mellomrom. En reformatering som bytter tabs med mellomrom (eller omvendt) får hver innrykket linje til å se ulik ut i eksakt-match-modus. Slå på Ignorer mellomrom, eller reformater begge sidene identisk først.
  • Byte-order mark (BOM). Filer lagret som UTF-8 med BOM starter med en usynlig . Den første "linjen" vil alltid se endret ut når den diffes mot en BOM-løs fil. Fjern BOM-en i editoren din eller en hex-editor før du limer inn.
  • Smarte anførselstegn eller faste mellomrom. Lim fra et tekstbehandlingsprogram kan bytte " med " eller et vanlig mellomrom med et fast mellomrom. De ser identiske ut, men er forskjellige kodepunkter. Normaliser teksten til ren ASCII før diff.
  • Forskjeller kun i store/små bokstaver. API og api er forskjellige strenger med mindre du slår på Ignorer store/små bokstaver. De underliggende treffene viser fortsatt originalteksten; kun sammenligningen slappes av.
Ofte stilte spørsmål

Hva er forskjellen mellom linje- og ordmodus?

Linjemodus sammenligner tekst én linje om gangen — hvis noe tegn på en linje endres, flagges hele linjen som fjernet fra A og lagt til i B. Ordmodus deler på mellomrom og viser en mer granulær diff, som er bedre for prosa. For kildekode og konfigfiler er linjemodus nesten alltid det du vil ha.

Hvorfor dukker identisk-utseende linjer opp som endret?

Vanligvis en av tre usynlige forskjeller: linjeavslutninger (CRLF på Windows vs LF på Unix), etterstilte mellomrom, eller en byte-order mark (BOM) i starten av filen. Slå på "Ignorer mellomrom" for å hoppe over de to første. For BOM-er, åpne filen i en hex-editor eller fjern de ledende bytene før du limer inn.

Differ den tegn-for-tegn?

Nei. I linjemodus diffes per linje; i ordmodus diffes per mellomromseparert token. Diffs på tegnnivå produserer støyete utdata for de fleste reelle tekster. Hvis du trenger sammenligning på tegnnivå for korte strenger, lim dem inn i ordmodus — hvert tegn vil i praksis være sitt eget token hvis det ikke er mellomrom.

Hvor store kan inndataene være?

Diffen kjører i minnet, så det praktiske taket er nettleserens RAM. Opp til et par MB per side fungerer fint; titalls MB kan fryse fanen kortvarig fordi rendering av den uthevede HTML-en er tregere enn selve diffen. For veldig store filer, kjør diff lokalt med GNU diff eller git diff.

Kan jeg ignorere store/små bokstaver eller mellomrom?

Ja — begge er brytere i verktøylinjen. "Ignorer mellomrom" behandler enhver sekvens av mellomrom som likeverdig, nyttig for reformatert kode. "Ignorer store/små bokstaver" behandler "Hello" og "hello" som det samme. De underliggende treffene viser fortsatt originalteksten; kun sammenligningen slappes av.

Lagrer dere teksten jeg limer inn i de to boksene?

Nei. Vi beholder ikke noe du limer inn her — verken "før"-teksten eller "etter"-teksten. Det du sammenligner forkastes så snart du lukker eller oppdaterer siden. Ingen logger, ingen analyse av innholdet ditt. Hvis du vil ha ekstra trygghet, vil nettleserens utviklerverktøy vise deg hva som skjer.