עבור לתוכן
Alex Kovalev

השוואת טקסטים

שתי גרסאות של אותו דבר, וצריך לדעת מה השתנה. הדביקו את שתיהן.

רץ בדפדפן שלכם. שום דבר שתדביקו או תגררו לכאן לא מועלה לשום מקום.

אפשר לגרור קובץ טקסט ישר לכל אחת מהתיבות.

תצוגה
הדגשה

שורה אחת נוספה, אחת נמחקה, 3 שונו

– מתוך 2
1# מחמצת של אמצע השבוע1# מחמצת של אמצע השבוע
2קמח: 500 גרם קמח לחם2קמח: 450 גרם קמח לחם + 50 גרם מלא
3מים: 350 גרם (70%)3מים: 375 גרם (75%)
4אוטוליזה: 30 דקות
5מלח: 10 גרם4מלח: 10 גרם
6מחמצת: 100 גרם, הוזנה אתמול בערב5מחמצת: 100 גרם, הוזנה אתמול בערב
7התפחה: 4 שעות בטמפרטורת החדר6התפחה: 5 שעות בטמפרטורת החדר
7מתיחות וקיפולים כל 30 דקות, 4 פעמים
8עיצוב, ואז למקרר ללילה8עיצוב, ואז למקרר ללילה
9אפייה: 250 מעלות, 20 דקות עם מכסה, 25 בלי9אפייה: 250 מעלות, 20 דקות עם מכסה, 25 בלי

המקש j עובר לשינוי הבא ו-k לקודם (כשלא מקלידים בתיבה).

איך משתמשים

4 צעדים
  1. הדביקו את הגרסה הישנה במקור ואת החדשה באחרי השינוי. אפשר גם לגרור קובץ טקסט ישר לאחת התיבות.
  2. קראו את שורת הסיכום ועברו בין השינויים עם הבא והקודם, או במקשים j ו-k.
  3. העבירו את הדגשה למילים או לתווים כדי לראות בדיוק מה השתנה בתוך השורה. אם קוד שעבר הזחה מחדש מסתיר את השינויים האמיתיים, סמנו התעלמות מרווחים.
  4. בקבצים ארוכים סמנו הסתרת שורות זהות. בסוף, העתקת unified diff נותנת patch שאפשר להדביק בטיקט או ב-code review.

מה זה עושה

דקת קריאה

הכלי משווה את הטקסטים שורה אחר שורה באלגוריתם של Myers, אותו אלגוריתם ש-git diff משתמש בו כברירת מחדל. אחר כך הוא משווה מילים או תווים בתוך כל זוג שורות ששונו. שורות שנמחקו מסומנות − ושורות שנוספו +, כך שלא צריך להבדיל בין אדום לירוק.

אפשר להתעלם מרווחים ומאותיות גדולות וקטנות. סופי שורה של Windows (CRLF) נחשבים כמו LF רגיל, כך שקובץ שנשמר ב-Windows לא נצבע כולו. לעומת זאת, ירידת שורה חסרה בסוף הקובץ כן נחשבת לשינוי, בדיוק כמו ב-git.

כפתור ההעתקה נותן unified diff סטנדרטי: כותרות --- ו-+++, ואחריהן מקטעי @@ עם שלוש שורות הקשר. גם patch וגם git apply מקבלים אותו. קבצים עד 20 MB נפתחים ישר מהדיסק. טקסטים גדולים מושווים ב-worker ברקע, כך שהעמוד לא נתקע בזמן ההקלדה.

אם git מראה לכם קונפליקט מיזוג במקום diff, הגדירו את merge.conflictStyle ל-zdiff3. בין שני הצדדים יופיע האב המשותף, ורואים מה כל צד באמת שינה. יש דוגמה בפתק על zdiff3.

שאלות

5 שאלות

איך משווים שני קבצים ומוצאים הבדלים?

גררו קובץ אחד למקור ואת השני לאחרי השינוי: הדפדפן קורא אותם מקומית ושום דבר לא עולה לשרת. בטרמינל אותו דבר עושה diff -u old.txt new.txt, או git diff --no-index old.txt new.txt אם רוצים את הצבעים של git.

למה כל השורות מסומנות כשונות?

כמעט תמיד בגלל רווחים: טאבים מול רווחים, רווחים בסוף שורה, או formatter שהזיח מחדש את כל הקובץ. סמנו התעלמות מרווחים. אם שורות שנראות זהות עדיין שונות, העבירו את ההדגשה לתווים: רווח בלתי שביר או מירכאה מעוגלת יופיעו כתו מסומן אחד.

זה עובד עם טקסט בעברית, בערבית או ברוסית?

כן. כל שורה בוחרת את הכיוון שלה, כך שעברית וערבית נקראות מימין לשמאל והקוד נשאר משמאל לימין. המילים מופרדות לפי אותיות Unicode, אז מילים בעברית ובקירילית מודגשות כמילים שלמות.

אפשר להשוות שני מסמכי Word או PDF?

לא ישירות. קובץ .docx הוא ארכיון zip ו-PDF הוא תיאור של עמוד, אז הכלי רואה בייטים ולא משפטים: הוא או ידחה את הקובץ כבינארי או יציג רעש. העתיקו את הטקסט מכל מסמך והדביקו בשתי התיבות, או שמרו את שניהם קודם כ-.txt רגיל. לשינויים בתוך Word עצמו, כולל עיצוב, יש סקירה ← השוואה.

איך משווים שתי רשימות ומוצאים מה חסר?

קודם מיינו את שתי הרשימות, פריט אחד בכל שורה, ורק אז הדביקו. שורות שנמצאות רק ברשימה הראשונה מסומנות −, ושורות שרק בשנייה מסומנות +. בלי מיון, אותם פריטים בסדר אחר ייראו כמו בלגן של מחיקות והוספות. מיינו את העמודה ב-Excel או ב-Google Sheets, או הריצו sort list.txt בטרמינל, וסמנו התעלמות מגודל אותיות אם Apple ו-apple הם אותו דבר מבחינתכם.

עוד כלים על הקיר