تخطَّ إلى المحتوى الرئيسي
Tooletto

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

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

  • الملفات لا تغادر جهازك أبدًا
  • مجاني، بدون تسجيل
  • بدون علامات مائية
  • يعمل دون اتصال بعد التحميل
Loading tool…

كيفية استخدام أداة مقارنة النصوص

  1. 1

    الصق النسختين

    الصق النص الأصلي في المربع الأيسر والنسخة المعدَّلة في المربع الأيمن.

  2. 2

    اختر وضع المقارنة

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

  3. 3

    اقرأ الفروقات المبرَزة

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

كيف تقرر مقارنة الأسطر ما يُعتبَر "نفس الشيء"

تحت البريق المرئي، تحل أداة المقارنة مشكلة تطابق محددة: بالنظر إلى قائمتين من الأسطر، إيجاد أطول تسلسل من الأسطر يظهر، بنفس الترتيب النسبي، في كلا المستندين — كل ما في ذلك التسلسل المشترك يُترَك دون تغيير، وكل ما عداه هو ما يُوسَم كمُضاف أو محذوف. هذه هي الحدسية وراء فكرة "أطول تسلسل مشترك" التي تُبنى عليها كل خوارزمية مقارنة عامة الغرض، بما فيها تلك التي تستخدمها Git نفسها. هذا يفسّر تفصيلًا يبدو غريبًا لولا ذلك: نقل كتلة نص من أسفل مستند إلى أعلاه يُبلَّغ عنه عادةً كحذف كبير زائد إضافة كبيرة، لا كعملية "نقل" واحدة — الخوارزمية تبحث فقط عن ترتيب مشترك، وكتلة منقولة تكسر ذلك الترتيب عند موضعها القديم والجديد معًا.

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

متى تكون المقارنة على مستوى الكلمة أكثر فائدة من المقارنة على مستوى السطر

وضع الأسطر هو الافتراضي الصحيح لأي شيء يكون فيه السطر وحدة ذات معنى بذاتها — شيفرة المصدر، كائنات JSON، صفوف CSV، مدخلات السجل — لأن السطر في تلك الصيغ يمثل عادةً فكرة كاملة واحدة، ومعرفة أن سطرًا معينًا تغيّر هي بحد ذاتها معلومة مفيدة، بغض النظر عن أي حرف داخله تحرّك. يصبح وضع الكلمات أكثر فائدة بمجرد أن تكون الوحدة ذات المعنى أصغر من سطر: فقرة من النثر، بند في عقد، أو جملة في مستند طويل، حيث يكون التغيير المهم عادةً كلمة أو عبارة واحدة والجملة المحيطة بها متطابقة. مقارنة نص كهذا سطرًا بسطر ستَسِم الفقرة بأكملها كـ"متغيّرة" لأجل تعديل كلمة واحدة، وهذا صحيح تقنيًا لكنه لا يخبرك بشيء عمّا تغيّر فعليًا حتى تقرأ الفقرة بأكملها مرة أخرى بنفسك.

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

استخدامات عملية شائعة تتجاوز مقارنة النثر

مقارنة نسختين من شيفرة المصدر قبل دمجهما هي الحالة الكلاسيكية، لكن التقنية نفسها تنطبق جيدًا إلى ما هو أبعد بكثير من مراجعة الشيفرة: مقارنة تصديرين لملف إعدادات لتحديد بالضبط أي إعداد تغيّر بين نشر يعمل وآخر معطّل، أو فحص نسختين من تصدير CSV للتأكد من أن الصفوف المتوقعة فقط هي التي تغيّرت، أو مقارنة مسودة عقد بمراجعة سابقة لإيجاد كل بند عدّله الطرف الآخر دون قراءة المستند بأكمله جنبًا إلى جنب مرة أخرى. في كل حالة من هذه الحالات، قيمة أداة المقارنة واحدة — تحوّل "هل هذان الشيئان مختلفان، وإن كانا كذلك فأين" من تمرين قراءة يدوية جنبًا إلى جنب إلى إجابة بصرية فورية.

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

هل يُرفع أي من النصين إلى خادم؟

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

ما الذي يُحتسَب "فرقًا" بالضبط؟

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

هل يعمل هذا مع الشيفرة أو JSON أو ملفات الإعدادات، لا النصوص فقط؟

نعم — المقارنة القائمة على الأسطر هي بالضبط التقنية التي تستخدمها أدوات التحكم بالإصدارات مثل Git، وتعمل بنفس الطريقة هنا لشيفرة المصدر وJSON وYAML وصفوف CSV وملفات السجل أو أي صيغة أخرى موجَّهة بالأسطر. وضع الكلمات أكثر فائدة للنثر أو العقود أو التوثيق، حيث يكون التغيير المهم عادةً عبارة داخل جملة لا السطر بأكمله.

هل يمكنها التعامل مع مستندات كبيرة؟

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

أي الأسطر يشير إليها عداد "+N مُضاف، −M محذوف"؟

يحسب العدد الكلي للأسطر (أو الكلمات، في وضع الكلمات) المُضافة والمحذوفة عبر المقارنة بأكملها — نفس الأرقام التي ستحصل عليها بعدّ كل سطر أخضر وأحمر في النتيجة. الأسطر غير المتغيرة لا تُحتسَب.

هل يمكنني الحصول على الفرق كنص عادي بدلًا من العرض الملوّن؟

نعم. زر "نسخ الفرق" ينسخ نسخة نصية عادية مع علامة "+" أو "-" أو فراغ في بداية كل سطر (نفس الاتفاقية التي تستخدمها Git ومعظم أدوات المقارنة عبر سطر الأوامر)، بحيث يمكنك لصقها في بريد إلكتروني أو تذكرة أو تعليق مراجعة شيفرة.