عند العمل على ملفات كبيرة في Vim، تظهر مشكلة متكررة:
كيف أبحث عن كلمة بسرعة؟ وكيف أستبدلها دون إفساد باقي الملف؟
كثير من المستخدمين يلجؤون إلى النسخ اليدوي أو التعديل المتكرر، مما يضيّع الوقت ويزيد احتمال الخطأ.
لذلك، في هذا المقال، سنتعلّم البحث والاستبدال في Vim بطريقة احترافية، خطوة بخطوة، وبأسلوب عملي قابل للتطبيق مباشرة.
المشكلة: البحث اليدوي يستهلك الوقت
في الملفات البرمجية أو ملفات الإعدادات، قد تتكرر نفس الكلمة عشرات المرات.
نتيجةً لذلك، يصبح التعديل اليدوي مرهقًا، خصوصًا عند العمل على:
- ملفات إعدادات
- كود برمجي كبير
- ملفات تحتوي على متغيرات متكررة
الحل: استخدام أوامر البحث والاستبدال في Vim
Vim يوفّر نظام بحث قوي جدًا يعتمد على الأوامر، مما يسمح لك:
- بالوصول السريع لأي كلمة
- باستبدالها بدقة
- بالتحكم في نطاق التغيير
البحث داخل الملف في Vim
البحث عن كلمة
من الوضع العادي (Normal Mode):
/word
ثم اضغط Enter.
- للانتقال إلى النتيجة التالية:
n - للرجوع إلى النتيجة السابقة:
N
البحث العكسي
?word
يبحث في الاتجاه المعاكس داخل الملف.
البحث مع تمييز النتائج
لجعل النتائج واضحة، استخدم:
:set hlsearch
لإلغاء التمييز:
:noh
وبذلك تتجنب التشويش أثناء التعديل.
الاستبدال الأساسي (Search & Replace)
استبدال أول تطابق في السطر
:s/old/new/
يستبدل أول ظهور للكلمة في السطر الحالي فقط.
استبدال جميع التطابقات في السطر
:s/old/new/g
استبدال في كامل الملف
:%s/old/new/g
هذا هو الأمر الأكثر استخدامًا عند تعديل ملفات كبيرة.
الاستبدال مع التأكيد اليدوي
في بعض الحالات، لا تريد الاستبدال التلقائي.
لذلك، استخدم:
:%s/old/new/gc
وسيطلب Vim تأكيد كل عملية استبدال، مما يقلل الأخطاء.
الاستبدال ضمن نطاق محدد
يمكنك تحديد نطاق الأسطر يدويًا:
:10,20s/old/new/g
يتم الاستبدال فقط بين السطر 10 و20.
وهذا مفيد جدًا عند العمل على أقسام معينة من الملف.
البحث باستخدام تعبيرات منتظمة (Regex)
Vim يدعم البحث المتقدم باستخدام Regex، مثل:
:/^import
يبحث عن أي سطر يبدأ بكلمة import.
رغم ذلك، يُنصح باستخدام هذه الميزة تدريجيًا حتى لا تصبح معقدة في البداية.
أخطاء شائعة يجب تجنبها
- نسيان الرمز
%عند الاستبدال في كامل الملف - الاستبدال دون استخدام
cفي الملفات الحساسة - عدم تجربة الأمر على سطر واحد أولًا
نتيجةً لذلك، قد يتم تعديل الملف بالكامل بشكل غير مقصود.
مثال عملي واقعي
لنفترض أنك تريد تغيير متغير اسمه api_url إلى base_url في ملف كامل:
:%s/api_url/base_url/gc
وبذلك:
- تتحكم في كل عملية استبدال
- تتجنب التعديلات غير المرغوبة
الخلاصة
البحث والاستبدال في Vim من أقوى ميزاته، ومع ذلك يتم تجاهلها من قبل الكثيرين.
بمجرد إتقان هذه الأوامر، ستتمكن من:
- تعديل الملفات بسرعة
- تقليل الأخطاء
- العمل بكفاءة أعلى
