about.md

عن أداة TextDiff لمقارنة النصوص

TextDiff أداة diff مجانية على الإنترنت تكشف الفروق بين نصين. تضع جنبًا إلى جنب نصين متشابهين مع اختلاف بسيط، مثل مسودة مستند ونسخته المعدلة، أو العقد الذي أرسلته والنسخة التي أُعيدت إليك، أو الإصدار القديم والجديد من الكود، فتُظهر لك الأداة بالألوان الأسطر المضافة والمحذوفة والمعدلة، وأي كلمة أو حرف تغيّر بالضبط داخل السطر.

تجري المقارنة بالكامل داخل المتصفح. لا يُرسل النص الذي تدخله ولا الملفات التي تفتحها إلى أي خادم، لذا يمكنك مقارنة مستندات داخلية أو عقود لا يجوز إرسالها إلى الخارج. تعمل الحسابات في Web Worker، فلا تتجمد الواجهة حتى مع عشرات آلاف الأسطر.

انتقل إلى مقارنة النصوص

الميزات الرئيسية

إبراز الأسطر وما تغيّر داخلها

تعثر الأداة على الأسطر المتغيرة، ثم تُبرز مرة أخرى داخل كل سطر الكلمات أو المقاطع أو الأحرف التي تغيّرت فقط.

عرض جنبًا إلى جنب أو موحّد

بدّل بين العرض المتجاور (side-by-side) والعرض الموحّد (unified) الذي يُقرأ من الأعلى إلى الأسفل كما في git.

خيارات التجاهل

يمكن المقارنة مع تجاهل المسافات في نهاية السطر، أو عدد المسافات، أو كل المسافات، أو حالة الأحرف، أو الأسطر الفارغة.

توحيد نهايات الأسطر

يُعامل الفرق بين فواصل الأسطر في Windows (CRLF) وmacOS وLinux (LF)، ووجود السطر الجديد الأخير من عدمه، على أنها شيء واحد.

مقارنة JSON بعد ترتيب المفاتيح

يُحلَّل ملفا JSON، وتُرتَّب مفاتيح الكائنات وتُوحَّد المسافات البادئة، ثم تجري المقارنة. الاختلاف في ترتيب المفاتيح وحده لا يُحسب فرقًا.

إحصاءات التغيير والتنقل

تعرض عدد الأسطر المضافة والمحذوفة والمعدلة ونسبة التشابه (%)، وتنقلك مباشرة إلى التغيير السابق أو التالي.

التغييرات فقط

تطوي المقاطع الطويلة التي لم تتغير وتُبقي 3 أسطر حول كل تغيير. يمكن توسيع المقطع المطوي بالنقر عليه.

سحب الملفات وإفلاتها

اسحب ملفات .txt و.md و.json و.csv وملفات الكود المختلفة إلى الخانة، أو أفلت ملفين دفعة واحدة لمقارنتهما مباشرة.

تصدير patch وHTML

انسخ النتيجة أو احفظها كنص unified diff (patch)، أو انسخها كجدول HTML ملوّن لتلصقه في بريد إلكتروني أو مستند.

طريقة الاستخدام

  1. الصق النص المرجعي في الخانة اليسرى (الأصل)، والنص المراد مقارنته في الخانة اليمنى (المعدَّل). يمكنك أيضًا سحب ملف إلى الخانة أو استخدام زر الفتح أعلاها.
  2. إذا كان خيار «المقارنة أثناء الكتابة» مفعّلًا فستظهر النتيجة بمجرد توقفك عن الكتابة. وإلا فاضغط [قارِن] أو Ctrl+Enter.
  3. عند الحاجة اختر تجاهل المسافات أو حالة الأحرف أو الأسطر الفارغة، ووحدة المقارنة داخل السطر (كلمات/مقاطع/أحرف)، وترتيب مفاتيح JSON. تُعاد المقارنة فور تغيير أي خيار.
  4. من شريط النتيجة اختر العرض المتجاور أو الموحّد، وتنقّل بين التغييرات بأزرار الأسهم للأعلى والأسفل (أو Alt+↑/↓).
  5. للمشاركة انسخ patch أو احفظه، أو انسخ النتيجة بصيغة HTML.

شرح خيارات المقارنة

المسافات: مقارنة كما هيتُعامل المسافات وعلامات الجدولة مثل أي حرف آخر. اختلاف مسافة بادئة واحدة يجعل السطرين مختلفين.
المسافات: تجاهل المسافات في نهاية السطرتُتجاهل المسافات وعلامات الجدولة المتبقية في نهاية السطر فقط. يستبعد الفروق الناتجة عن مسافات حذفها المحرر أو أبقاها تلقائيًا. (يشبه ‎-Z في GNU diff)
المسافات: تجاهل عدد المسافاتتُعد المسافة الواحدة والمسافات المتعددة شيئًا واحدًا. لكن الموضع الذي فيه مسافة يظل مختلفًا عن الموضع الذي لا مسافة فيه: «a b» و«a b» متطابقان، أما «a b» و«ab» فمختلفان. (diff -b)
المسافات: تجاهل كل المسافاتتُحذف كل المسافات قبل المقارنة، فيُعد «a b» و«ab» سطرًا واحدًا. (diff -w)
داخل السطر: كلماتتُعرض التغييرات على مستوى مجموعات الأحرف والأرقام والرموز. مناسب للكود والنصوص الإنجليزية.
داخل السطر: مقاطع بين المسافاتالوحدة هي كل ما يقع بين مسافتين، بما في ذلك علامات الترقيم الملاصقة له. مناسب لقراءة النصوص العادية.
داخل السطر: أحرفالمقارنة حرفًا بحرف. تُستخدم لتحديد المواضع التي تغيّر فيها حرف أو حرفان بدقة، مثل المبالغ والتواريخ وأرقام البنود.
تجاهل حالة الأحرفتُعد الأحرف اللاتينية الكبيرة والصغيرة حرفًا واحدًا.
تجاهل الأسطر الفارغةتُستبعد من المقارنة الأسطر الفارغة أو التي لا تحتوي إلا على مسافات. تُعرض بلون باهت ولا تدخل في عدد التغييرات. (يشبه diff -B)
توحيد نهايات الأسطرتُعد CRLF وCR وLF فاصل سطر واحدًا، ويُتجاهل وجود السطر الجديد في نهاية الملف من عدمه. عند إيقافه يظهر CR في نهاية السطر على هيئة ␍، والسطر الذي ليس بعده سطر جديد على هيئة ∅.
ترتيب مفاتيح JSONيُحلَّل الجانبان كـ JSON، وتُرتَّب مفاتيح الكائنات أبجديًا، ويُعاد كتابتهما بمسافة بادئة من مسافتين، ثم تجري المقارنة. لا يتغير ترتيب عناصر المصفوفات. إذا فشل التحليل تُبيَّن لك موضع الخطأ.

لا تُقارَن فروق نهايات الأسطر (مثل CRLF) بدقة إلا في النص المحمَّل من ملف. أما النص الملصق في مربعات الإدخال فيحوّل المتصفح فواصل أسطره إلى LF، لذلك لا تظهر فروق CR.

اختصارات لوحة المفاتيح

Ctrl+Enter / ⌘+Enterقارِن الآن
Alt+↓ / Alt+↑الانتقال إلى التغيير التالي / السابق
n / p (خارج خانة الإدخال)الانتقال إلى التغيير التالي / السابق
Tab (داخل خانة الإدخال)إدخال حرف جدولة

ما تدخله لا يُرسل إلى أي مكان

محرك المقارنة هو ملف جافاسكربت (diff-core.js) يُنزَّل مع هذه الصفحة، وتُعالج النصوص والملفات في ذاكرة المتصفح فقط. لا يُحفظ ما تدخله، ولا يتذكر المتصفح سوى السمة والخيارات التي اخترتها. عند إغلاق الصفحة يختفي ما أدخلته.

الأسئلة الشائعة

هل تُحفظ النصوص التي أقارنها على خادم؟

لا. تجري المقارنة بجافاسكربت داخل المتصفح فقط، ولا يُرسل ما تدخله إلى أي خادم. وفي صفحة مفتوحة بالفعل تعمل المقارنة حتى بعد قطع الاتصال بالشبكة.

ما أكبر حجم نص يمكن مقارنته؟

يمكن تحميل ملف واحد حتى 30 ميغابايت، وتُعالج مقارنة عشرات آلاف الأسطر في خيط منفصل (Web Worker) فلا تتجمد الصفحة. إذا كانت الفروق كثيرة جدًا فقد تُعرض نتيجة تقريبية لا أصغرية من أجل السرعة. وإذا تجاوزت النتيجة 4,000 سطر تُعرض التغييرات فقط أولًا.

ما الخوارزمية المستخدمة؟

تُستخدم لمقارنة الأسطر خوارزمية الفروق O(ND) لمايرز (1986) بصيغة تستهلك ذاكرة خطية. إذا أصبحت التكلفة كبيرة جدًا تنتقل إلى تقسيم تقريبي كما يفعل GNU diff. وداخل الأسطر المتغيرة تُعاد مقارنة الكلمات أو المقاطع أو الأحرف بالخوارزمية نفسها.

كيف يُميَّز «المعدَّل» من «المضاف والمحذوف»؟

إذا كان سطر محذوف وسطر مضاف داخل مقطع متغير متشابهين بما يكفي في المحتوى، يُقرنان ويُحسبان سطرًا واحدًا معدَّلًا. أما الأسطر التي لا قرين لها فتُحسب مضافة أو محذوفة.

كيف تُحسب نسبة التشابه (%)؟

هي نسبة الأحرف التي لم تتغير إلى مجموع أحرف الجانبين (بما فيها فواصل الأسطر). تُحسب الأسطر المتطابقة كاملة، ومن الأسطر المعدلة يُحسب الجزء الذي بقي كما هو فقط.

ما الفرق بين تجاهل عدد المسافات وتجاهل كل المسافات؟

تجاهل عدد المسافات يتجاهل كم مسافة هناك فقط، فيعد «a b» و«ab» مختلفين. أما تجاهل كل المسافات فيحذفها جميعًا قبل المقارنة فيعدهما متطابقين. في الكود الذي تكون فيه المسافات البادئة ذات معنى، مثل بايثون، استخدم تجاهل كل المسافات بحذر.

هل يمكن تطبيق patch أُنشئ مع تفعيل خيارات التجاهل؟

يُنشأ patch بناءً على الفروق الظاهرة على الشاشة، وتؤخذ أسطر السياق من النص الأصلي. الفروق المتجاهَلة لا تدخل في patch، لذا إذا أردت إعادة إنتاج الملف بدقة فأوقف كل الخيارات قبل إنشاء patch.

هل يمكن مقارنة مستندات Word أو PDF أو HWP؟

لا يمكن قراءة هذه الملفات مباشرة، لكن يمكنك نسخ النص من المستند ولصقه للمقارنة. قد تضيع حينها الجداول والحواشي والتنسيق. التفاصيل في دليل مقارنة المستندات.

هل يمكن استخدامها على الهاتف؟

نعم. على الشاشات الضيقة تُرتَّب خانات الإدخال فوق بعضها، وتبدأ النتيجة بالعرض الموحّد، ويمكنك التبديل إلى العرض المتجاور.

الأدلة