Vim Cheatsheet | كل ما تود معرفته عن استخدام محرر النصوص والكود برنامج ڤم
ڤِم (Vim) هو محرر نصوص لواجهة سطر الأوامر المعروفة بإسم تيرمينال. معظم مستخدمي ڤِم مبرمجين ومهندسي برمجيات ومديري أنظمة.
هناك برنامج جديد اسمه نيو-ڤِم (neovim or nvim) وهو يعتبر إعادة كتابة لبرنامج ڤِم بطريقة حديثة مع بعض القدرات الجديدة. كل الأوامر المستخدمة في ڤم (vim) قابله للإستخدام في نيو ڤم (nvim).
الخروج من ڤِمْ Vim 🔗
:q
: إغلاق الملف والخروج من برنامج فم لو لم يكن هناك ملف آخر مفتوح في برنام فم بالفعل.:qa
: إغلاق جميع الملفات.:w
: حفظ الملف. كتابة التغييرات على الملف.:wq
أو:x
: حفظ الملف وإغلاقه.ZZ
: حفظ الملف وإغلاقه.ZQ
: الخروج بدون حفظ التغييرات.:q!
: الخروج بدون حفظ التغييرات.
التنقل داخل برنامج ڤِم Vim 🔗
الأسهم وأزرار الإتجاهات 🔗
أزرار الإتجاهات (الأسهم) تعمل بشكل عادي جداً، ولكن برنامج ڤم به أزرار مخصصة للإتجاهات تسهل عليك الحركة داخل الملف.
h
: السهم لليسار. التحرك حرف واحد ناحية اليسار.j
: السهم لأسفل. التحرك سطر واحد للأسفل.k
: السهم لأعلى. التحرك سطر واحد للأعلى.l
: السهم لليمين. التحرك حرف واحد لليمين.<C-U>
(CTRL + u): التحرك نصف صفحة للأعلى.<C-D>
(CTRL + d): التحرك نصف صفحة للأسفل.<C-B>
(CTRL + b): التحرك صفحة كاملة للأعلى.<C-F>
(CTRL + f): التحرك صفحة كاملة للأسفل.
التنقل بين الكلمات 🔗
b
: الكلمة السابقة.w
: الكلمة التالية.ge
: نهاية الكلمة السابقة.e
: نهاية الكلمة التالية.
التنقل بين الأسطر / التنقل بين السطور 🔗
0
(zero): أول السطر.^
(carret): أول السطر ولكن بعد المسافات.$
: نهاية السطر.
التنقل بين الحروف 🔗
fc
: التحرك حتى الوصول إلى الحرفc
. على سبيل المثال:ff
معناه التحرك حتى الوصول إلى الحرف f.Fc
(capital F small c): التحرك للخلف حتى الوصول إلىc
. على سبيل المثال:Fd
معناها التحرك للخلف حتى الوصول إلى الحرف d.
التنقل داخل الملف / المستند 🔗
gg
: السطر الأول.G
: السطر الأخير.:{number}
: الوصول للسطر رقم {number}. على سبيل المثال::221
معناها الوصول إلى السطر رقم 221 داخل الملف.{number}G
: الوصول إلى السطر رقم {number}.{number}j
: التحرك {number} سطر للأسفل.{number}k
: التحرك {number} سطر للأعلى.
التنقل والتجول في النافذة 🔗
zz
: توسيط السطر.zt
: محاذاة السطر لأعلى.zb
: محاذاة السطر للأسفل.H
: التحرك إلى أعلى الشاشة.M
: التحرك إلى منتصف الشاشة.L
: التحرك إلى أسفل الشاشة.
التنقل بين نتائج البحث 🔗
n
: الإنتقال إلى نتيجة البحث التالية.N
: الإنتقال إلى نتيجة البحث السابقة.*
: الإنتقال إلى الكلمة الكاملة التالية تحت مؤشر الكتابة.#
: الإنتقال إلى الكلمة الكاملة السابقة تحت مؤشر الكتابة.
التنقل بين الصفحات المبوبة 🔗
:tabedit [file]
: تعديل الملف في تبويب جديد.:tabfind [file]
: فتح الملف إن وجد في تبويب جديد.:tabclose
: إغلاق التبويب الحالي.:tabs
: عرض كل التبويبات.:tabfirst
: الذهاب إلى أول تبويب.:tablast
: الذهاب إلى آخر تبويب.:tabn
: الذهاب إلى التبويب التالي.:tabp
: الذهاب إلى التبويب السابق.
التعديل في برنامج ڤم Vim 🔗
a
: البدء في الكتابة.A
: البدء في الكتابة في نهاية السطر الحالي.i
: البدء في الكتابة في المكان الحالي.o
: إنشاء سطر تالي فارغ والبدء في الكتابة.O
: إنشاء سطر سابق فارغ والبدء في الكتابة.s
: حذف حرف والبدء في الكتابة.S
: حذف السطر والبدء في الكتابة.C
: الحذف من هنا حتى نهاية السطر والبدء في الكتابة.r
: استبدال حرف واحد.R
: الدخول إلى وضع الإستبدال (Replace mode).u
: إلغاء التعديلات. التراجع عن التعديلات (Undo changes).<C-R>
: إعادة تطبيق التعديلات (Redo changes).
وضع التحديد في برنامج ڤم | Visual mode in Vim 🔗
v
: بدء وضع التحديد والإختيار (visual mode).V
: بدء وضع تحديد واختيار السطور (visual line mode).<C-V>
(CTRL+v): بدء وضع تحديد واختيار الفقرات النصية (visual block mode).In
: بدء وضع التحديد والإختيار (visual mode).d
orx
: حذف النص المُحدَّد.s
: استبدال النص المُحدَّد.y
: نسخ النص المُحدَّد (Yank = Copy).
شاهد المعاملات Operators ↓ لمعرفة المزيد من الإمكانيات.
المعاملات | Operators 🔗
طريقة الإستخدام 🔗
المعاملات (Operators) تساعدك في التعامل مع النصوص محددة بالحركة (motion). هذه المعاملات تتم في الوضع العادي (normal mode).
d
: تنفيذ الحركة المعروفة بـw
.
قائمة المعاملات | Operators list 🔗
d
: حذف.y
: نسخ (yank = copy).c
: تغيير (حذف ثم إدخال).>
: المحاذاة لليمين.<
: المحاذاة لليسار.=
: المحاذاة التلقائية.g~
: تبديل أحجام الحروف (حروف كبيرة - حروف صغيرة).gU
: جعل كل الحروف كبيرة (Uppercase).gu
: جعل كل الحروف صغيرة (Lowercase).!
: استخدام برنامج خارجي.
شاهد صفحة التوثيق عن طريق :help operator
.
أمثلة على استخدام المعاملات (operators usage) 🔗
دمج المعاملات مع الحركة.
dd
(حرف مكرر): حذف السطر الحالي.dw
: حذف الكلمة التالية.db
: حذف حتى بداية الكلمة.2dd
: حذف سطرين.dip
: حذف فقرة نصية.- (in visual mode)
d
: حذف النص المُحدَّد.
لمزيد من المعلومات، افتح صفحة التوثيق عن طريق :help motion.txt
.
الكائنات النصية (النصوص) 🔗
كيف تستخد النصوص 🔗
الكائنات النصية تسمح لك بالتعامل داخل أو حول الفقرات النصية.
المُعامِل Operator | داخل أو حول [i]nside or [a]round | الكائن النصي Text object |
---|---|---|
v | i | p |
كل الكائنات النصية / كل النصوص 🔗
p
: فقرة نصية.w
: كلمة.s
: جملة.[
: نص موجود بين [].(
: نص موجود بين ().{
: نص موجود بين {}.<
: نص موجود بين<>
.'
: نص موجود بين علامتي تنصيص مفردتين."
: نص موجود بين علامتي تنصيص مزدوجتين.- ```: نص موجود بين علامتي تنصيص من النوع المُسمّى tick.
b
: نص داخل[(
.B
: نص داخل[{
.t
: وسم في لغة إكس إم إل (A XML tag block).
أمثلة على الكائنات النصية 🔗
vip
: اختيار الفقرة النصية.vipipipip
: اختيار أكثر من فقرة نصية.yip
: نسخ الفقرة النصية الداخلية. Yank = copy = نسخ.yap
: نسخ الفقرة النصية (بما فيه تقسيمة الفقرة إلى سطور). Yank = copy = نسخ.dip
: حذف الفقرة النصية الداخلية.cip
: تغيير الفقرة النصية الداخلية.
اقرأ المُعامِلات Operators ⤴ لتعرف المزيد من القدرات والإمكانيات.
الطبقات Folds 🔗
zo
أوzO
: فتح.zc
أوzC
: غلق.za
أوzA
: تبادل الفتح والغلق (Toggle).zv
: فتح الطبقة في السطر الحالي.zM
: غلق كل الطبقات.zR
: فتح كل الطبقات.zm
: غلق طبقات أكثر Fold more (foldlevel += 1).zr
: غلق طبقات أقل Fold less (foldlevel -= 1).zx
: تحديث الطبقات Update folds.
الحروف الكبيرة (Uppercase) معناها أن الحدث تكراري للطبقات الفرعية (recursive). على سبيل المقال، zO معناها فتح تكراري لكل الطبقات الفرعية (open recursively).
المزيد من طرق التنقل والتجول (navigation) 🔗
%
: أقرب إغلاق لأحد هذه الأقواس{[()]}
. الوصول إلى نهاية الفانكشن (function).[(
: القوس السابق(
.[{
: القوس السابق{
.[<
: القوس المربع السابق<
.])
: القوس الدائري التالي)
.[m
: بداية الميثود (method) السابقة.[M
: نهاية الميثود (method) السابقة.
الإنتقال في برنامج ڤم Jumping in Vim 🔗
<C-O>
(CTRL+o): الرجوع إلى المكان السابق (previous location).<C-I>
(CTRL+i): الإستمرار في التنقل للأمام (Go forward).gf
: الذهاب إلى ملف بمؤشر الكتابة (Go to file in cursor).
عداد الأرقام Counters 🔗
<C-A>
: زيادة الرقم (Increment number).<C-X>
: إنقاص الرقم (Decrement number).
النوافذ Windows 🔗
z{height}<Cr>
: تغيير طول النافذة إلى {height} سطر طولاً. Resize pane to {height} lines tall.
الوسوم Tags 🔗
:tag Classname
: الإنتقال إلى أول تعريف للـ Classname. Jump to first definition of Classname.<C-]>
: الإنتقال إلى التعريق. Jump to definition.g]
: رؤية كل التعريفات. See all definitions.<C-T>
: الرجوع للوسم السابق. Go back to last tag.<C-O>
: الرجوع للخلف Back.<C-I>
: الإستمرار للأمام forward.:tselect Classname
: الوصول إلى تعريفات الـ Classname. Find definitions of Classname.:tjump Classname
: الوصول إلى تعريفات الـ Classname. Find definitions of Classname (auto-select 1st).
حالة الحروف Case 🔗
يُمكنك استخدام هذه الأوامر في وضع الإختيار (visual) أو الوضع العادي (normal mode).
~
: تغيير حالة الحروف Toggle case (Case => cASE).gU
: تغيير حالة الحروف إلى حروف كبيرة (Uppercase).gu
: تغيير حالة الحروف إلى حروف صغيرة (Lowercase).gUU
: تغيير حالة الحروف في السطر الحالي للحروف الكبيرة (Uppercase current line) (alsogUgU
).guu
: تغيير حالة الحروف في السطر الحالي إلى الحروف الصغيرة (Lowercase current line) (alsogugu
).
المزيد من الأوامر 🔗
.
: تكرار الأمر السابق.]p
: لصق بناءاً على محاذاة السطر الحالي.:set ff=unix
: تحويل نهايات السطور الخاصة بويندوز (Windows) للخاصة بـ يونكس (Unix).
سطر الأوامر Command line 🔗
<C-R><C-W>
: إدخال الكلمة الحالية إلى سطر الأمر. Insert current word into the command line.<C-R>"
: Paste from " register.<C-X><C-F>
: إكمال المسار بشكل تلقائي في وضع الإدخال. Auto-completion of path in insert mode.
محاذاة النص Text alignment 🔗
:center [width]
:right [width]
:left
اعرف أكثر عن طريق :help formatting
.
الآلة الحاسبة Calculator 🔗
نفذ هذا الأمر في وضع الإدخال. Do this in insert mode.
<C-R>=128/2
: عرض نتيجة القسمة : ‘64’.
الخروج بخطأ Exiting with an error 🔗
:cq
:cquit
تعمل مثل :qa
، ولكن تعطي خطأ. هذا الأمر مناسب لأوامر جِت (Git).
Marks 🔗
- ``^`: Last position of cursor in insert mode.
- ``.`: Last change in current buffer.
- ``"`: Last exited current buffer.
- ``0`: In last file edited.
''
: Back to line in current buffer where jumped from.``
: Back to position in current buffer where jumped from.- ``[`: To beginning of previously changed or yanked text.
- ``]`: To end of previously changed or yanked text.
- ``<`: To beginning of last visual selection.
- ``>`: To end of last visual selection.
ma
: Mark this cursor position as a.- ``a`: Jump to the cursor position a.
'a
: Jump to the beginning of the line with position a.d'a
: Delete from current line to line of mark a.d
a`: Delete from current position to position of mark a.c'a
: Change text from current line to line of a.y
a`: Yank text from current position to position of a.:marks
: List all current marks.:delm a
: Delete mark a.:delm a-d
: Delete marks a, b, c, d.:delm abc
: Delete marks a, b, c.
Spell checking 🔗
:set spell spelllang=en_us
: Turn on US English spell checking.]s
: Move to next misspelled word after the cursor.[s
: Move to previous misspelled word before the cursor.z=
: Suggest spellings for the word under/after the cursor.zg
: Add word to spell list.zw
: Mark word as bad/mispelling.zu
orC-X
(Insert Mode): Suggest words for bad word under cursor from spellfile.
لمزيد من المعلومات، نفذ هذا الأمر :help spell
.
Common & Useful Examples 🔗
$_
: Delete the current line.vi(
: highlight/select the text within ().vi"
: hightlight/select the text between “”.ce
orcw
: change the word.
More resources & learning sources 🔗
أتمنى أن تكون قد استفدت من الموضوع ، إن كنت تعرف أي شخص يُمكنه الإستفادة من هذه المعلومات، ارسل له رابط هذا المقال. إن أردت معرفة الموضوعات الجديدة بعد نشرها مباشرةً على موقع أبانوب حنا ، تابعني على يوتيوب و تيليجرام ، و فيسبوك ، و واتساب .