البرمجة

أساسيات Vim المتقدمة للمطورين

تعرف على أساسيات Vim – الجزء الثاني

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

التعمق في أنماط التشغيل (Modes)

يمثل التبديل بين الأنماط في Vim جوهر طريقة العمل، ومن خلال فهمها يمكن للمستخدم التحكم بشكل فوري في محتوى الملف. إلى جانب النمط العادي (Normal Mode) والنمط الإدخالي (Insert Mode)، هناك أنماط إضافية يجب التعرف عليها:

1. نمط الأوامر (Command-Line Mode)

عند الضغط على الزر : أثناء التواجد في النمط العادي، يدخل المستخدم نمط الأوامر، الذي يتيح تنفيذ أوامر مثل الحفظ :w، الخروج :q، أو تنفيذ أوامر مركبة مثل :wq للحفظ والخروج معاً.

يمكن تنفيذ عمليات بحث واستبدال من خلال هذا النمط أيضًا، مثل:

ruby
:%s/old/new/g

والتي تقوم باستبدال كل كلمة “old” بكلمة “new” في كامل الملف.

2. نمط التحديد المرئي (Visual Mode)

يُستخدم لتحديد النصوص بطريقة مرنة:

  • الضغط على v يدخل في الوضع المرئي لتحديد الأحرف.

  • الضغط على V لتحديد الأسطر بالكامل.

  • الضغط على Ctrl+v للدخول إلى النمط البصري الكتلي (Visual Block)، وهو مفيد للتعامل مع الأعمدة والنصوص المرتبة رأسياً.

التنقل المتقدم داخل الملفات

يتميز Vim بقدرته الفائقة على التنقل بسرعة داخل الملفات الطويلة والمعقدة، باستخدام أوامر قصيرة لكنها قوية:

  • gg: للذهاب إلى بداية الملف.

  • G: للذهاب إلى نهاية الملف.

  • nG: للذهاب إلى السطر رقم n.

  • { و }: للتنقل بين الفقرات.

  • ( و ): للتنقل بين الجمل.

  • * و #: للبحث عن الكلمة تحت المؤشر للأمام أو للخلف.

يمكن استخدام هذه الأوامر مع مكررات عددية لتسريع التنقل، مثلاً 3} للتنقل ثلاث فقرات للأمام.

التحرير الفعال باستخدام الأوامر المركبة

يتمتع Vim بميزة الأوامر المركبة التي تسمح بإجراء تعديلات سريعة ومحددة بدقة على النصوص. من أبرز هذه الأوامر:

  • d للحذف.

  • c للتغيير (حذف والدخول إلى نمط الإدخال).

  • y لنسخ (yank).

  • p للصق بعد المؤشر، و P للصق قبله.

  • x لحذف الحرف تحت المؤشر، و X لحذف الحرف قبله.

يمكن دمج هذه الأوامر مع حركات (motions) لتحديد مدى التأثير. على سبيل المثال:

  • dw: حذف كلمة واحدة.

  • d2w: حذف كلمتين.

  • d}: حذف الفقرة التالية.

  • ci": حذف النص داخل علامات الاقتباس والدخول إلى نمط الإدخال.

البحث والاستبدال داخل الملف

يمتلك Vim نظاماً قوياً للبحث والاستبدال باستخدام أوامر دقيقة تعتمد على التعبيرات النمطية:

  • للبحث: :/pattern أو /pattern.

  • للتنقل بين النتائج: n للأمام و N للخلف.

  • للاستبدال في كامل الملف:

ruby
:%s/foo/bar/g
  • لاستبدال في نطاق محدد (مثل الأسطر 10 إلى 20):

bash
:10,20s/foo/bar/g
  • مع تأكيد كل استبدال:

ruby
:%s/foo/bar/gc

استخدام السجلات (Registers)

يسجل Vim كل عمليات النسخ والحذف في سجلات يمكن الوصول إليها لاحقاً. للوصول إلى محتوى سجل معين:

  • "a لنسخ إلى السجل a: "ayw

  • "a للصق من السجل a: "ap

  • :registers أو :reg لعرض جميع السجلات المخزنة.

السجلات تعزز الإنتاجية من خلال حفظ عدة مقاطع من النصوص في الوقت ذاته.

تخصيص Vim باستخدام ملفات الإعداد .vimrc

يتيح Vim تخصيص سلوكه بشكل عميق عبر ملف .vimrc الموجود في مجلد المستخدم. من خلال هذا الملف يمكن تفعيل أوامر وتحسينات تجعل بيئة العمل أكثر مرونة وكفاءة.

أمثلة على إعدادات شائعة:

vim
set number " عرض أرقام الأسطر set relativenumber " عرض أرقام الأسطر بشكل نسبي syntax on " تفعيل تلوين الكود البرمجي set tabstop=4 " تحديد عدد المسافات لكل tab set shiftwidth=4 " عدد المسافات في عمليات التحريك set expandtab " تحويل زر tab إلى مسافات set autoindent " تفعيل التوسيط التلقائي set clipboard=unnamedplus " تفعيل النسخ من/إلى النظام مباشرة

استخدام الإكمال التلقائي (Autocompletion)

يمتلك Vim قدرات متعددة للإكمال التلقائي. عند العمل على ملف برمجي أو نص طويل، يمكن استخدام Ctrl+n و Ctrl+p لتصفح الاقتراحات للكلمات المستعملة داخل الملف.

كما توجد إضافات متقدمة مثل:

  • YouCompleteMe

  • Deoplete

  • coc.nvim

توفر إكمالاً ذكياً شبيهاً بما يوجد في المحررات الحديثة مثل VSCode، لكنها تحتاج لتكوين إضافي باستخدام مدير الإضافات مثل vim-plug أو Vundle.

الجدول التالي يوضح مقارنة لأوامر الإدخال والحذف الشائعة في Vim:

الأمر الوظيفة
i إدخال قبل المؤشر
a إدخال بعد المؤشر
o فتح سطر جديد أسفل
O فتح سطر جديد أعلى
x حذف الحرف تحت المؤشر
dd حذف السطر بالكامل
D حذف من المؤشر حتى نهاية السطر
cw تغيير الكلمة
ci" تغيير النص داخل علامات الاقتباس
yy نسخ السطر بالكامل
p لصق بعد المؤشر
P لصق قبل المؤشر

التعامل مع ملفات متعددة والنوافذ (Buffers and Windows)

يدعم Vim فتح عدة ملفات والتنقل بينها باستخدام ما يُعرف بالمخازن (Buffers) والنوافذ (Windows):

الأوامر الأساسية للمخازن:

  • :e filename لفتح ملف جديد.

  • :ls أو :buffers لعرض الملفات المفتوحة.

  • :bN للتنقل إلى المخزن رقم N.

  • :bd لإغلاق مخزن.

الأوامر الأساسية للنوافذ:

  • :split لفتح نافذة أفقية.

  • :vsplit لفتح نافذة عمودية.

  • Ctrl+w + h/j/k/l للتنقل بين النوافذ.

  • Ctrl+w + q لإغلاق نافذة.

تسمح هذه الخصائص بكتابة الأكواد أو الملاحظات أو التحرير المتوازي بطريقة متقدمة دون مغادرة بيئة Vim.

التعامل مع الماكرو (Macros)

الماكرو في Vim عبارة عن تسلسل من الأوامر يمكن تسجيله وإعادة تشغيله لأداء مهام متكررة.

كيفية استخدام الماكرو:

  1. q لبدء التسجيل. مثال: qa لتسجيل في السجل a.

  2. تنفيذ الأوامر المطلوبة.

  3. الضغط على q مرة أخرى لإيقاف التسجيل.

  4. لتشغيل الماكرو: @a.

  5. لتكرار الماكرو عدة مرات: 10@a.

الماكرو يقلل من الوقت والجهد في العمليات المتكررة المعقدة مثل تنسيق البيانات أو تحويل النصوص البرمجية.

إضافة الإضافات (Plugins) لتحسين تجربة Vim

يمكن لـ Vim دعم مئات الإضافات التي توسع قدراته لتشمل تنسيقات حديثة، تكامل مع Git، واجهات ذكية لتصفح الملفات، وتنسيق الكود تلقائياً.

أشهر مديري الإضافات:

  • vim-plug

  • Vundle

  • Pathogen

مثال على استخدام vim-plug:

vim
call plug#begin('~/.vim/plugged') Plug 'preservim/nerdtree' " متصفح ملفات Plug 'tpope/vim-fugitive' " تكامل Git Plug 'junegunn/fzf' " بحث سريع Plug 'neoclide/coc.nvim', {'branch': 'release'} " إكمال ذكي call plug#end()

بعد الحفظ، يتم تشغيل الأمر :PlugInstall لتثبيت الإضافات.

استراتيجيات لتعلم Vim بفعالية

لكي يتقن المستخدم Vim بالكامل، من المهم اتباع خطوات منهجية:

  • التدريب المستمر على اختصارات الحذف والنسخ والتعديل.

  • تخصيص ملف .vimrc بشكل دوري بناءً على احتياجات المستخدم.

  • استخدام الألعاب التعليمية مثل Vim Adventures.

  • قراءة الوثائق الرسمية (:help) لاكتشاف الأوامر الخفية.

  • مراجعة أوامر كل جلسة وتكرارها لضمان التثبيت في الذاكرة.


المراجع: