المشكلة: لماذا تشعر أن Vim بطيء؟
المشكلة: لماذا تشعر أن Vim بطيء وكيفة التحرك داخل Vim بسرعة؟
عندما يبدأ أغلب المبتدئين مع Vim، أول ما يفعلونه هو محاولة استخدامه كما لو كان محرراً عادياً يعتمد على الماوس.
لذلك، تجد اليد تتحرك بين لوحة المفاتيح والفأرة طوال الوقت للوصول إلى سطر أو كلمة، ونتيجةً لذلك يصبح Vim أبطأ من أي محرر رسومي عادي.
في المقابل، قوة Vim الحقيقية تظهر عندما تتوقف تماماً عن لمس الماوس، بالإضافة إلى ذلك تتعلم كيف تتحرك داخل الملف بسرعة من خلال لوحة المفاتيح فقط.
هنا يتحول Vim من أداة “غريبة” إلى سلاح إنتاجية حقيقي يوفر عليك ثواني صغيرة في كل حركة، لكنها تتراكم لتصبح دقائق وساعات على المدى الطويل.
في هذا المقال سنبدأ من المشكلة: صعوبة التحرك داخل الملف، ثم ننتقل إلى الحلول خطوة بخطوة حتى تصل إلى مستوى تصبح فيه الحركة داخل Vim طبيعية وسريعة جداً.
الحل الأول: فهم أوضاع Vim قبل أي شيء
أول خطأ يقع فيه المبتدئ هو محاولة الحركة وهو في الوضع الخاطئ داخل Vim.
لذلك، قبل أن تحفظ أي اختصار، تحتاج أن تفهم بسرعة ثلاثة أوضاع أساسية ستتعامل معها طول الوقت:
- Normal mode: الوضع الافتراضي بعد فتح الملف، وهو الوضع الذي تستخدمه للحركة والأوامر.
- Insert mode: لوضع وكتابة النص، تدخله مثلاً بالضغط على
i. - Visual mode: لتحديد النص واختياره.
الفكرة هنا بسيطة:
- التحرك دائماً يتم في Normal mode.
- الكتابة تتم في Insert mode.
إذا وجدت نفسك تضغط على الأسهم ولا يحدث ما تتوقعه، فغالباً أنت في Insert mode.
في هذه الحالة، كل ما عليك فعله هو الضغط على Esc للعودة إلى Normal mode، ثم تبدأ في استخدام أوامر الحركة التي سنشرحها الآن.
الحل الثاني: استبدال الأسهم بالحروف h j k l
أول خطوة عملية للتخلص من الماوس هي التخلص من أسهم لوحة المفاتيح نفسها.
صحيح أن الأسهم تعمل داخل Vim، لكن استخدامها يعني أن يدك ستتحرك كثيراً بعيداً عن مركز لوحة المفاتيح، ونتيجةً لذلك تضيع جزءاً من السرعة التي يمنحك إياها Vim.
بدلاً من ذلك، يوفر لك Vim مفاتيح حركة مدمجة تحت أصابع يدك اليمنى:
hللتحرك حرفاً واحداً إلى اليسارlللتحرك حرفاً واحداً إلى اليمينjللنزول سطر واحد لأسفلkللصعود سطر واحد لأعلى
حاول في البداية أن تجبر نفسك على استخدام هذه المفاتيح فقط للحركة الأفقية والعمودية.
في المقابل، تجنّب أزرار الأسهم قدر الإمكان حتى تتبرمج عضلات يدك على أماكن h j k l تلقائياً، وبالتالي ستشعر بعد فترة قصيرة أن الأسهم نفسها أصبحت بطيئة ومزعجة.
الحل الثالث: القفز بين الكلمات بدل الحروف
بعد أن تتعود على الحركة بالحروف، ستكتشف أن التحرك حرفاً حرفاً ليس عملياً مع الملفات الطويلة.
لذلك، تحتاج للانتقال من “حركة بطيئة” إلى “قفزات مدروسة” داخل السطر نفسه.
في Vim يمكنك التحرك بين الكلمات بدلاً من الحروف باستخدام:
wللانتقال إلى بداية الكلمة التاليةbللعودة إلى بداية الكلمة السابقةeللذهاب إلى نهاية الكلمة الحالية أو التالية
مثال عملي:
- ضع المؤشر في بداية سطر يحتوي على جملة طويلة.
- اضغط
wعدة مرات ولاحظ كيف يقفز المؤشر بين الكلمات بدل الحروف. - اضغط
bللعودة للخلف وتجرّب الاتجاه المعاكس.
بالإضافة إلى ذلك، يمكنك دمج هذه الحركات مع الأرقام.
مثلاً:
- الأمر
3wيقفز ثلاث كلمات دفعة واحدة. - الأمر
2bيعود كلمتين للخلف.
نتيجةً لذلك، لن تحتاج إلى تكرار الضغط كثيراً، بل ستفكر بعدد “القفزات” التي تحتاجها للوصول إلى المكان المطلوب.
الحل الرابع: التنقل الذكي داخل السطر نفسه
في كثير من الأحيان لا تريد القفز كلمة كلمة، بل تحتاج الوصول إلى أول السطر أو آخره بسرعة.
لذلك، يوفر لك Vim أوامر مخصصة للتحرك بشكل ذكي داخل السطر الحالي:
0(صفر) للانتقال إلى بداية السطر تماماً^للانتقال إلى أول حرف غير فارغ في السطر$للذهاب إلى نهاية السطر
هذه الأوامر مفيدة جداً عندما تعمل على أكواد فيها مسافات بادئة (indentation).
في المقابل، استخدام الأسهم للوصول لنهاية السطر أو بدايته يبدو مرهقاً وغير عملي بعد أن تتعود على هذه الحركات.
حاول أن تعوّد نفسك على النمط التالي:
^→ للذهاب لأول حرف حقيقي في الكود.$→ للذهاب لنهاية التعليمة البرمجية.
بهذه الطريقة تتحرك داخل السطر نفسه بسرعة، بالإضافة إلى ذلك تجهّز نفسك لدمج الحركة مع أوامر أخرى (مثل الحذف أو النسخ).
الحل الخامس: القفز بين الأسطر والصفحات
في الملفات الكبيرة، التحرك سطراً بسطر قد يصبح بطيئاً حتى لو استخدمت j و k.
لذلك، تحتاج إلى أوامر تسمح لك بالقفز بين أجزاء الصفحة نفسها:
Ctrl + dللنزول نصف صفحة لأسفلCtrl + uللصعود نصف صفحة لأعلىCtrl + fللنزول صفحة كاملة للأمامCtrl + bللصعود صفحة كاملة للخلف
إضافة إلى ذلك، لديك أوامر سريعة لتموضع المؤشر داخل الشاشة الحالية:
Hلنقل المؤشر إلى أعلى الشاشةMلنقل المؤشر إلى منتصف الشاشةLلنقل المؤشر إلى أسفل الشاشة
نتيجةً لذلك، يمكنك أن تقفز إلى منتصف صفحة الكود أو أعلاها أو أسفلها بثلاث ضغطات فقط، بدلاً من التمرير البطيء.
هذا النوع من الحركة مهم جداً حين تراجع ملفاً طويلاً وتريد مقارنة جزء في الأعلى بآخر في الأسفل دون أن تضيع الوقت.
الحل السادس: البحث داخل الملف بدل التمرير العشوائي
أحياناً لا تعرف بالضبط أين يوجد السطر الذي تبحث عنه، لكنك تعرف كلمة مميزة داخله.
في هذه الحالة، أفضل حل هو الاستفادة من البحث المدمج في Vim بدلاً من التمرير العشوائي.
للبحث للأمام عن كلمة معينة:
- اضغط
/في Normal mode. - اكتب الكلمة التي تبحث عنها.
- اضغط Enter.
بعد ذلك:
- استخدم
nللانتقال إلى المطابقة التالية. - استخدم
Nللعودة إلى المطابقة السابقة.
في المقابل، إذا أردت البحث للخلف مباشرة يمكنك استخدام ? بدلاً من /.
بهذا الأسلوب لن تحتاج إلى استخدام الماوس للبحث البصري في الملف، بالإضافة إلى ذلك ستتعلم مع الوقت أن تختار كلمات مميزة تجعل الوصول إلى السطر المطلوب أسرع بكثير.
الحل السابع: القفز بين الأقواس والكود المعقّد
في ملفات الكود خصوصاً، كثيراً ما تحتاج للانتقال بين قوس مفتوح وآخر مغلق بسرعة.
لذلك، يوفر Vim أمراً بسيطاً جداً لكن تأثيره كبير على الإنتاجية:
%للانتقال بين الأقواس المتطابقة:(),{},[]
عندما يكون المؤشر على أحد الأقواس، ضغط % ينقلك مباشرة إلى القوس المقابل.
نتيجةً لذلك، يمكنك مراجعة الكتل البرمجية (blocks) بسرعة، خصوصاً في لغات مثل C و JavaScript و PHP و Python (مع بعض الاختلافات).
بالإضافة إلى ذلك، يمكنك دمج % مع أوامر أخرى، لكن في هذه المرحلة يكفي أن تستخدمه كأداة حركة سريعة داخل الكود المعقد.
الحل الثامن: دمج الحركة مع الأوامر لتحسين الإنتاجية
إحدى نقاط قوة Vim أنه لا يفصل بين “الحركة” و”الأوامر”، بل يدمجهما معاً.
لذلك، بعد أن تتقن أوامر الحركة السابقة، يمكنك استخدامها كجزء من أوامر أقوى.
أمثلة بسيطة:
dwيحذف من مكان المؤشر حتى بداية الكلمة التالية.d$يحذف من مكان المؤشر حتى نهاية السطر.c3wيغيّر (delete + insert) ثلاث كلمات قادمة دفعة واحدة.
في المقابل، إذا ما زلت في بداية طريقك مع Vim، ركّز أولاً على إتقان الحركة فقط بدون أوامر الحذف والتعديل.
بعد أن تشعر أن التنقل داخل الملف لم يعد مشكلة، يمكنك الانتقال لمرحلة “التحرير السريع” باستخدام نفس الحركات.
خطة تطبيق عملية (من المشكلة إلى الحل)
حتى لا يبقى المقال مجرد قراءة نظرية، هذه خطة بسيطة لتطبيق ما تعلمته:
- افتح أي ملف نصي أو كود داخل Vim.
- خلال جلسة العمل هذه، قرر أنك لن تستخدم الماوس إطلاقاً.
- ابدأ بالحركة باستخدام
h j k lفقط حتى تشعر أنها طبيعية. - بعد ذلك، أضف أوامر
wوbوeللقفز بين الكلمات. - استخدم
0و^و$للتحكم داخل السطر نفسه. - جرّب
Ctrl + dوCtrl + uللتحرك بين أجزاء الصفحة. - أخيراً، استخدم
/للبحث عن كلمة داخل الملف وانتقل بين النتائج بـnوN.
نتيجةً لذلك، ستلاحظ خلال أيام قليلة أن تحريك الماوس أصبح هو الذي يبطئك، بالإضافة إلى ذلك ستشعر أن Vim بدأ يظهر وجهه الحقيقي كمحرر سريع ومحترف.
