تعرف على أساسيات 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 الموجود في مجلد المستخدم. من خلال هذا الملف يمكن تفعيل أوامر وتحسينات تجعل بيئة العمل أكثر مرونة وكفاءة.
أمثلة على إعدادات شائعة:
vimset 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 عبارة عن تسلسل من الأوامر يمكن تسجيله وإعادة تشغيله لأداء مهام متكررة.
كيفية استخدام الماكرو:
-
qلبدء التسجيل. مثال:qaلتسجيل في السجل a. -
تنفيذ الأوامر المطلوبة.
-
الضغط على
qمرة أخرى لإيقاف التسجيل. -
لتشغيل الماكرو:
@a. -
لتكرار الماكرو عدة مرات:
10@a.
الماكرو يقلل من الوقت والجهد في العمليات المتكررة المعقدة مثل تنسيق البيانات أو تحويل النصوص البرمجية.
إضافة الإضافات (Plugins) لتحسين تجربة Vim
يمكن لـ Vim دعم مئات الإضافات التي توسع قدراته لتشمل تنسيقات حديثة، تكامل مع Git، واجهات ذكية لتصفح الملفات، وتنسيق الكود تلقائياً.
أشهر مديري الإضافات:
-
vim-plug
-
Vundle
-
Pathogen
مثال على استخدام vim-plug:
vimcall 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) لاكتشاف الأوامر الخفية. -
مراجعة أوامر كل جلسة وتكرارها لضمان التثبيت في الذاكرة.
المراجع:
-
Vim Documentation – https://www.vim.org/docs.php
-
Practical Vim (Drew Neil, The Pragmatic Programmers)

