المعلوماتية > عام
تعرف إلى محرر Vim!
يعد محرر Vim من أشهر المحررات التي تستخدم من نافذة التيرمينال (الطرفية) الخاصة بنظام لينكس أو ماك؛ حيث يتم تنصيبه تلقائياً مع النظام. كما يمكن أيضاً استخدامه في لوحة الأوامر الخاصة بالويندوز Cmd بعد تنصيبه على نظام ويندوز.
يكمن التميز في هذا المحرر في عدم حاجته لاستخدام الماوس أو الأسهم في توجيه الملف وتحريك المؤشر؛ حيث يوجد اختصار خاص بكل شيء فيه دون استثناء، وكل ما عليك هو الاعتياد على هذه الاختصارات التي ترجمناها لكم.
يمكن فتح الملفات عبر برنامج Vim عبر الأمر التالي : vim file.txt وفي حال لم يكن الملف file.txt موجوداً فسيقوم البرنامج بإنشائه تلقائياً.
تتمحور الفكرة الرئيسية من محرر Vim حول امتلاكه لأربع حالات (Modes) وهي:
1-الحالة العامة Normal mode.
2-حالة الإدخال Insert mode.
3-حالة التحديد Visual mode.
4-حالة الأوامر Command mode.
وسنشرح كلاً منها تباعاً.
الحالة العامة Normal mode:
وهي الحالة الافتراضية التي يبدأ بها محرر Vim، كما أنها الحالة التي يعود إليها المحرر بعد الخروج من أي حالة من الحالات الأخرى. وتُستخدم هذه الحالة للتنقل بين أرجاء الملف عبر الاختصارات السريعة التي سنذكر معظمها في نهاية المقال.
حالة الإدخال Insert mode:
وهي الحالة التي تكتب فيها بداخل الملف حيث لا وجود لأي اختصارات في هذه الحالة سوى الإدخال بداخل الملف، ويمكن الدخول إليها عبر الضغط على أحد الأحرف التالية : a، A، i، I، o، and O، شرط أن تكون في الحالة العامة Normal mode، ويكون الخروج منها عبر الضغط على مفتاح الخروج escape.
حالة التحديد Visual mode:
ويمكن الدخول إلى هذه الحالة عبر الضغط على مفتاح V،v أو Ctrl+v. وتُستخدم هذه الحالة لتحديد النصوص بداخل الملف بهدف نسخها أو لصقها أو حذفها أو قصها. ويقوم Vim بالخروج من حالة التحديد
في كل مرة تنتهي مهمة من المهام المذكورة سابقاً (القص أو اللصق أو... ) ليعود إلى الحالة العامة.
حالة الأوامر Command mode:
يتم الدخول إلى هذه الحالة عند الضغط على نقطتي التعريف ":"، ومن ثم سيظهر كل ما تكتبه تحت المستند وليس بداخله؛ حيث يمكن القيام بأوامر واختصارات عديدة في هذه الحالة كتنفيذ أوامر الـShell والحفظ والخروج وغيرها.
طريقة الحفظ والخروج :
لحفظ الملفات في محرر Vim، وبعد العودة إلى الحالة العامة، يمكن الضغط على حرف Z كبيرة مرتين ZZ وذلك للحفظ والخروج، أو يمكنكم استخدام حالة الأوامر عبر الضغط على النقطتين ومن ثم w، وهي اختصار لـwrite، وبعدها حرف q، وهو اختصار لـquite، ليصبح الاختصار كالتالي: :wq
مستند الخصائص الخاصة بالمحرر .vimrc:
يمكن التعديل على خصائص محرر Vim عبر ملف يسمى .vimrc حيث يمكن الوصول إليه عبر الأمر التالي بعد الانتقال للملف الذي تم تنصيب المحرر بداخله: Vim .vimrc. ويمكن إضافة الخصائص عبر أكواد تجدونها في موقع Vim أو تعديلها مثل إظهار أرقام الأسطر فنقوم بإضافة الأمر التالي ":set numbers" بداخل ملف .vimrc.
الإكمال التلقائي Vim auto-complete:
هي ميزة تمت إضافتها منذ النسخة السابعة من المحرر vim، وهي تقوم باستكمال الكلمات تلقائياً عبر الكلمات المقترحة الموجودة في سجلات المحرر، والتي يمكن إظهارها عبر الضغط على ctrl+n ضمن حالة الإدخال Insert mode.
مثال:
ويمكن إضافة الكلمات الأكثر استخداماً لكل من اللغات المشهورة مثل php، python، html، css،javascript عبر إضافات ملحقة بالمحرر يتم تنصيبها يدوياً.
وننوّه إلى أن معظم المبرمجين يجدون صعوبة بالتعامل مع محرر Vim في البداية، ولكن التمرين والتدريب يجعله محررهم المفضل لخفته وسرعته وسرعة التنقل وكثرة الاختصارات التي تسهل عمل المبرمجين بشكل كبير.
أهم اختصارات vim:
اختصارات تحريك المؤشر:
h – تحريك المؤشر إلى اليسار.
j – تحريك المؤشر إلى الأسفل.
k – تحريك المؤشر إلى الأعلى.
l – تحريك المؤشر إلى اليمين.
w – القفز إلى بداية الكلمة التالية.
W – القفز إلى بداية الكلمة التالية مع تجاوز الرموز.
e – القفز إلى نهاية الكلمة التالية.
E – القفز إلى نهاية الكلمة التالية مع تجاوز الرموز.
b – القفز إلى بداية الكلمة السابقة.
B – = مع تجاوز الرموز.
0 – القفز إلى بداية السطر.
^ - القفز إلى أول حرف في السطر مع تجاوز المسافات الفارغة في بداية السطر.
$ -القفز إلى نهاية السطر.
G – القفز إلى آخر سطر في المستند.
5G – القفز إلى السطر 5.
fx – القفز إلى تلكلمة التالية التي تحتوي المتغير x.
tx – القفز إلى الكلمة السابقة التي تحتوي المتغير x.
}- القفز إلى النص التالي أو الدالة التالية.
{- القفز إلى النص السابق أو الدالة السابقة.
ملاحظة: يمكن استخدام رقم قبل الاختصار لتكرار الاختصار، مثلاً إذا ضغطنا على 4j سيقوم المؤشر بالنزول 4 أسطر إلى الأسفل.
اختصارات حالة الإدخال Insert mode:
i – البدء بحالة الإدخال مباشرة قبل مكان وجود المؤشر.
I – البدء بحالة الإدخال من بداية السطر.
a – البدء بحالة الإدخال مباشرة بعد المؤشر.
A – البدء بحالة الإدخال في نهاية السطر.
o – البدء بحالة الإدخال في سطر جديد تحت السطر الحالي.
O – البدء بحالة الإدخال في سطر جديد فوق السطر الحالي.
ea – البدء بحالة الإدخال في نهاية المستند.
Esc – الخروج من حالة الإدخال.
اختصارات التعديل:
r – لاستبدال الحرف الحالي.
J – دمج السطر التالي مع السطر الحالي.
cc – استبدال كل السطر.
cw – استبدال كل المستند.
c$ - استبدال السطر التالي.
s – لحذف حرف.
S – لحذف سطر.
xp – استبدال حرف بحرف.
u - تراجع.
Ctrl + r – تراجع إلى الأمام (إعادة).
. – اعادة استخدام آخر أمر تم استخدامه.
اختصارات حالة التحديد Visual mode:
v – البدء بحالة التحديد من مكان وجود المؤشر.
V – البدء بحالة التحديد بشكل حر.
o – انتقل إلى نهاية النص المحدد.
Ctrl + v – البدء بحالة التحديد للنصوص.
O – انتقل إلى آخر نص.
aw – حدد كلمة.
ab – نص يحتوي ().
aB – نص يحتوي {}.
ib – نص داخل نص يحتوي ().
iB – نص داخل نص يحتوي {}.
Esc – الخروج من وضع التحديد.
اختصارات ما بعد التحديد:
> - تحريك لليمين.
< - تحريك لليسار.
y – نسخ النص المحدد.
d – حذف المحدد.
~ - تبديل للحروف الكبيرة أو الصغيرة.
اختصارات التحرير:
yy – نسخ سطر.
2yy – نسخ سطرين.
yw – نسخ كلمة.
y$ - نسخ حتى نهاية السطر.
p – لصق قبل المؤشر مباشرة.
P – لصق بعد المؤشر مباشرة.
dd – حذف/قص سطر.
2dd – حذف/قص سطرين.
dw – حذف/قص كلمة.
D – حذف/قص حتى نهاية السطر.
d$ - حذف/قص حتى نهاية السطر.
x – حذف/قص حرف.
الخروج:
:w! – احفظ بدون خروج.
:wq or :x or ZZ احفظ واخرج.
:q! or ZQ – خروج بدون حفظ التعديلات.
اختصارات البحث والاستبدال"
/pattern – ابحث عن كلمة pattern.
?pattern – ابحث للخلف عن كلمة pattern.
n – أظهر النتيجة التالية.
N –أظهر النتيجة السابقة.
:%s/old/new/g – استبدل الجديد بالقديم.
:%s/old/new/gc – استبدل القديم بالجديد مع التأكيد قبل كل استبدال.
اختصارات التعامل مع أكثر من ملف:
:e filename – عدل الملف في ملف جديد.
:bnext or :bn – انتقل إلى تلملف التالي.
:bprev or :bp – انتقل إلى تلملف السابق.
:bd – احذف الملف.
:sp filename -افتح ملف جديد في نافذة أفقية جديدة.
:vsp filename – افتح الملف في نافذة عمودية جديدة.
Ctrl + ws – افتح الملف بحجم نصف الشاشة.
Ctrl + ww – غيّر النافذة.
Ctrl + wq – أغلق النافذة.
Ctrl + wv – اقسم النافذة عمودياً.
Ctrl + wh – انتقل إلى النافذة اليسرى في حال تقسيم الشاشة عمودياً.
Ctrl + wl – انتقل إلى النافذة اليمنى في حال تقسيم الشاشة عمودياً.
Ctrl + wj – انتقل إلى النافذة السفلية في حال تقسيم الشاشة أفقياً.
Ctrl + wk انتقل إلى النافذة العلوية في حال تقسيم الشاشة عمودياً.
اختصارات علامات التبويب:
:tabnew filename or :tabn filename – افتح الملف في علامة تبويب جديدة.
Ctrl + wT – اجعل النافذة الحالية علامة تبويب.
gt or :tabnext or :tabn – انتقل إلى علامة التبويب التالية.
gT or :tabprev or :tabp – انتقل إلى علامة التبويب السابقة.
#gt – انتقل لعلامة التبويب رقم #.
:tabmove # - انتقل بين علامات التبويب عدد #.
:tabclose or :tabc – أغلق علامة التبويب الحالية.
:tabonly or :tabo – أغلق جميع علامات التبويب ما عدا الحالية.
المصادر: