تعديلاتي كانت رحلة عذاب يدوية: كيف أنقذتني ‘مؤشرات التحرير المتعددة’ من جحيم التكرار الممل؟

السلام عليكم يا جماعة الخير، معكم أخوكم أبو عمر.

اسمحوا لي أن أرجع بالذاكرة لبضع سنوات، لأيام كنت لا أزال أشق طريقي في عالم البرمجة المعقد. أذكر ليلة من تلك الليالي، كانت الساعة قد تجاوزت الثانية صباحًا، وأنا جالس أمام الشاشة، عيوني محمرّة من التعب والتركيز. كنت أعمل على مشروع كبير، وقررت في لحظة “عبقرية” متأخرة أن أغير اسم متغير مهم في قاعدة البيانات من item_price إلى price_in_usd. يا إلهي، ما أكبر الخطأ الذي ارتكبته!

كان هذا المتغير مستخدمًا في عشرات الملفات، ومئات الأسطر. وبدأت رحلة العذاب… فتحت الملف الأول، بحثت عن item_price، عدّلتها. ثم بحثت عن المرة التالية، وعدّلتها. وهكذا دواليك. ومع كل تعديل، كنت أدعو الله ألا أكون قد نسيت واحدة، أو أخطأت في كتابة الاسم الجديد. كانت “شغلانة بتوجّع الراس” بمعنى الكلمة. شعرت وكأني عامل في خط إنتاج ممل، أكرر نفس الحركة مرارًا وتكرارًا. في تلك الليلة، كرهت البرمجة للحظات، وتساءلت: “ألا توجد طريقة أفضل من هذا الجحيم؟”.

وبعد أيام، وأنا أشاهد فيديو لمبرمج محترف يشرح شيئًا ما، رأيته يفعل شيئًا يشبه السحر. بضغطة زر، ظهرت مؤشرات كتابة (cursors) في أماكن متعددة على الشاشة، وبدأ يكتب في كل هذه الأماكن في نفس الوقت! بقيت أنظر إلى الشاشة مذهولًا. يا زلمة، ما هذا؟ اكتشفت حينها ما يُعرف بـ “مؤشرات التحرير المتعددة” (Multi-Cursor Editing). تلك اللحظة كانت نقطة تحول حقيقية في إنتاجيتي كمبرمج. ومن يومها، أصبحت هذه الميزة سلاحي السري ضد التكرار الممل.

ما هي “مؤشرات التحرير المتعددة” (Multi-Cursor Editing)؟

ببساطة شديدة، هي ميزة خارقة في معظم محررات الكود الحديثة (مثل VS Code, Sublime Text, Atom, وغيرها) تسمح لك بإنشاء أكثر من مؤشر كتابة واحد في ملفك. بدلًا من أن يكون لديك مؤشر واحد يومض وينتظر أوامرك، يمكنك أن تضع عشرات المؤشرات في أماكن مختلفة، وكل ما تكتبه أو تحذفه يتم تطبيقه في كل هذه الأماكن في نفس اللحظة.

قد تبدو كأنها نسخة متطورة من “البحث والاستبدال” (Find and Replace)، لكنها أكثر تفاعلية ومرونة وقوة بمراحل. أنت ترى التغييرات تحدث أمام عينيك مباشرة، وتتحكم فيها بشكل كامل.

كيف غيّرت هذه الميزة حياتي البرمجية؟ (أمثلة عملية)

دعوني أريكم بالأمثلة كيف تحولت المهام التي كانت تستغرق دقائق طويلة من التكرار إلى ثوانٍ من الإنجاز.

1. تعديل أسماء المتغيرات والدوال دفعة واحدة

لنتخيل نفس السيناريو الذي عانيت منه. لديك متغير اسمه temp_val وتريد تغييره إلى temperatureCelsius في ملف كامل.

الطريقة القديمة (طريقة العذاب):

  1. ابحث عن temp_val.
  2. عدّل الكلمة.
  3. ابحث عن التالية.
  4. عدّل الكلمة.
  5. … كرر 50 مرة مع الدعاء ألا تخطئ.

الطريقة الجديدة (طريقة أبو عمر):

  1. حدد أول ظهور لكلمة temp_val.
  2. اضغط على Ctrl+D (أو Cmd+D في ماك) عدة مرات. مع كل ضغطة، سيقوم المحرر بتحديد الكلمة التالية المطابقة وإضافة مؤشر عندها.
  3. عندما يتم تحديد كل الكلمات التي تريد تغييرها، ابدأ بالكتابة مباشرة: temperatureCelsius.

شاهد السحر يحدث أمامك. كل الكلمات تتغير في نفس الوقت!


// الكود قبل التعديل
function processReading(temp_val) {
  if (temp_val > 30) {
    console.log("Hot day!");
  }
  const adjusted_val = temp_val + 5;
  return adjusted_val;
}
let temp_val = 25;
processReading(temp_val);

// بعد استخدام المؤشرات المتعددة (تعديل واحد فقط)
function processReading(temperatureCelsius) {
  if (temperatureCelsius > 30) {
    console.log("Hot day!");
  }
  const adjusted_val = temperatureCelsius + 5;
  return adjusted_val;
}
let temperatureCelsius = 25;
processReading(temperatureCelsius);

ملاحظة: في المثال أعلاه، لم أغير adjusted_val عمداً لأوضح أنك تتحكم تماماً بما يتم تحديده.

2. تحويل القوائم والبيانات بسرعة البرق

هذه من أكثر الحالات التي أستخدم فيها هذه الميزة. لنفترض أنك نسخت قائمة من الأسماء من ملف نصي، وتريد تحويلها إلى قائمة HTML (<li>).



رام الله
نابلس
الخليل
غزة
القدس

الطريقة القديمة: نسخ ولصق <li> و </li> حول كل سطر… يا للملل!

الطريقة الجديدة:

  1. استخدم ميزة “تحديد العمود” (Column Selection). في VS Code، يمكنك فعل ذلك بالضغط على Alt+Shift ثم السحب بالماوس لأسفل عند بداية كل الأسطر. سيظهر لك مؤشر طويل.
  2. اكتب <li>. ستتم إضافتها في بداية كل سطر.
  3. الآن اضغط على زر End في الكيبورد. ستنتقل كل المؤشرات إلى نهاية أسطرها.
  4. اكتب </li>.

وفي ثلاث خطوات، تحصل على النتيجة:


<li>رام الله</li>
<li>نابلس</li>
<li>الخليل</li>
<li>غزة</li>
<li>القدس</li>

3. إضافة أو حذف نفس الشيء في أسطر متعددة

لنفترض أنك تعمل على ملف CSS وتريد إضافة خاصية !important لعدة أسطر متفرقة لتجربة شيء ما بسرعة.


.card {
  color: #333;
  background-color: #fff;
  border-radius: 8px;
  padding: 16px;
}

بدلًا من الذهاب لكل سطر، يمكنك ببساطة الضغط على Alt (أو Option في ماك) والنقر بالماوس في نهاية الأسطر التي تريد التعديل عليها. سيظهر مؤشر في كل مكان تنقر فيه. ثم اكتب !important مرة واحدة.


.card {
  color: #333 !important;
  background-color: #fff !important;
  border-radius: 8px;
  padding: 16px !important;
}

هذه الحركة الصغيرة توفر عليك التنقل المزعج بين الأسطر.

أشهر الاختصارات التي لا أستغني عنها (في VS Code كمثال)

لكل محرر اختصاراته، ولكن هذه هي الأشهر في VS Code والتي أستخدمها يوميًا:

  • Ctrl + D (أو Cmd + D): تحديد الكلمة الحالية وإضافة مؤشر، ومع كل ضغطة تالية يحدد المطابقة التالية. هذه جوهرة حقيقية.
  • Alt + Click (أو Option + Click): إضافة مؤشر جديد في أي مكان تنقر فيه بالماوس. مثالية للتعديلات في أماكن متفرقة.
  • Alt + Shift + سحب بالماوس: تحديد كتلة أو عمود من النص وإضافة مؤشرات في كل سطر ضمن هذا التحديد. ممتازة للتعامل مع القوائم.
  • Ctrl + Alt + السهم للأعلى/للأسفل: إضافة مؤشر في السطر الذي فوق أو تحت السطر الحالي.

نصائح من “أبو عمر” لتصبح محترفًا في استخدامها

  • ابدأ بالبسيط: لا تحاول تعلم كل شيء دفعة واحدة. ابدأ بمهمة بسيطة مثل إعادة تسمية متغير باستخدام Ctrl+D. عندما تعتاد عليها، ستجد نفسك تبحث عن طرق أخرى لاستخدامها.
  • اجعلها عادة: في البداية، قد تنسى وجود الميزة وتعود للطريقة اليدوية. أجبر نفسك على التوقف والتفكير: “هل يمكنني فعل هذا بشكل أسرع باستخدام المؤشرات المتعددة؟”. بعد فترة، سيصبح الأمر تلقائيًا.
  • استكشف محرر الكود الخاص بك: ابحث في إعدادات واختصارات محرر الكود الذي تستخدمه عن “Multi-Cursor” أو “Multiple Selections”. قد تكتشف اختصارات وميزات لا تعرفها.
  • غيّر طريقة تفكيرك: الأهم من حفظ الاختصارات هو أن تبدأ في النظر إلى الكود كـ “أنماط” (Patterns) وليس مجرد “أسطر”. عندما ترى نمطًا متكررًا، فكر مباشرةً: “هذه مهمة للمؤشرات المتعددة”.

الخلاصة: استثمر دقائق لتوفير ساعات 🚀

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

نصيحتي الأخيرة لك: لا تبقَ أسيرًا لجحيم التكرار اليدوي. افتح محرر الكود الآن، وجرب هذه الاختصارات على ملف بسيط. استثمر 15 دقيقة فقط لتعلم الأساسيات، وأعدك بأنك ستشكرني لاحقًا. هذه ليست مجرد أداة، بل هي قوة خارقة صغيرة تجعل حياتك كمبرمج أفضل بكثير.

أتمنى لكم يومًا مليئًا بالكود النظيف والإنتاجية العالية. 💪

أبو عمر

سجل دخولك لعمل نقاش تفاعلي

كافة المحادثات خاصة ولا يتم عرضها على الموقع نهائياً

آراء من النقاشات

لا توجد آراء منشورة بعد. كن أول من يشارك رأيه!

آخر المدونات

برمجة وقواعد بيانات

تحديثات قاعدة البيانات بدون توقف: كيف أنقذنا نمط التوسيع والتعاقد (Expand/Contract) من جحيم التوقفات المجدولة؟

هل سئمت من إيقاف الخدمة مع كل تحديث لهيكلة قاعدة البيانات؟ أشارككم قصة حقيقية وكيف أنقذنا نمط التوسيع والتعاقد (Expand/Contract) من ليالي النشر الطويلة والمُجهدة،...

4 يونيو، 2026 قراءة المزيد
الشبكات والـ APIs

كانت إعادة المحاولة كارثة: كيف أنقذتنا مفاتيح عدم تكرار العمليات (Idempotency Keys) من جحيم الفواتير المزدوجة؟

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

4 يونيو، 2026 قراءة المزيد
الحوسبة السحابية

من التوقف التام إلى النجاة: كيف أنقذتنا استراتيجية “الضوء المرشد” (Pilot Light) يوم انقطعت السحابة؟

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

4 يونيو، 2026 قراءة المزيد
التوظيف وبناء الهوية التقنية

كانت مهمتي البرمجية للاختبار مجرد كود: كيف أنقذني توثيق القرارات من جحيم الصمت بعد المقابلة؟

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

4 يونيو، 2026 قراءة المزيد
التكنلوجيا المالية Fintech

من الانتظار لأيام إلى الدفع في ثوانٍ: كيف أنقذتنا شبكات الدفع الفوري من جحيم التحويلات البنكية؟

أسرد لكم من واقع تجربتي كـ "أبو عمر"، كيف عانينا من بطء وتكلفة التحويلات البنكية الدولية، وكيف جاءت شبكات الدفع الفوري ومعيار ISO 20022 لتكون...

4 يونيو، 2026 قراءة المزيد
البنية التحتية وإدارة السيرفرات

كان كل خادم لدينا ‘ندفة ثلج’ فريدة: كيف أنقذنا ‘الكود كبنية تحتية’ (IaC) من جحيم الانجراف اليدوي؟

في هذه المقالة، أشارككم قصة حقيقية من قلب المعركة التقنية مع "خوادم ندفات الثلج" الفوضوية. سنغوص في مفهوم "الكود كبنية تحتية" (IaC) وكيف أن أدوات...

4 يونيو، 2026 قراءة المزيد
اختبارات الاداء والجودة

كانت تغطية الاختبارات 100% لكن الأخطاء تتسرب: كيف أنقذنا “الاختبار الطفري” من جحيم الثقة الزائفة؟

كنا نظن أن تغطية الاختبار بنسبة 100% هي درعنا الواقي، لكن الأخطاء كانت تتسلل إلى الإنتاج كاللصوص في ليل بهيم. اكتشف كيف أنقذنا "الاختبار الطفري"...

4 يونيو، 2026 قراءة المزيد
البودكاست