البحث في الموقع
المحتوى عن 'مدخل إلى محرّر vim'.
-
الأدوات التي تُساعد المُبرمج في عمله كثيرة ومتعددّة، وهي التي تكون سببا إما في زيّادة أو تقليص إنتاجيته وسرعة عمله، لذلك فمن المهم اختيّار الأدوات بعناية، والمحرر أهم هذه الأدوات، إذ به تنجز معظم عملك البرمجي ولا يمكن لأيّ مبرمج العيش بدون محرّر. في هذا المقال سنطّلع معا على محرّر Vim الذي يعتبر من أشهر المحررات والذي يستخدمه عدد كبير من المبرمجين من مختلف أنحاء العالم في تعاملهم مع لغات البرمجة المختلفة؛ قد تصدمك حقيقة أن vim أُطلق منذ أكثر من 23 عاما، ولكنه لم يَشِخ بعد، فمُجتمَعُهُ لا زال يكبر يوما بعد يوم، ومعظم المبرمجين المعروفين يستخدمونه ويعتمدون عليه في تحرير شِفراتهم. تَعَلُّمُ كيفية التّعامُلِ مع محرّر نصوص؟ نعم لا حرج في ذلك، في الحقيقة عندما تستعمل شيئا ما لساعات طِوال لا بد أن تتعلّم كيف تكون أسرع في إنجاز العمل، ولذلك فإن تعلّم محرّر vim يستحق منك أن تعطيه شيئا من وقتك! ففي النهاية النّتائج هي المهمّة وما تريد أن تصل إليه هو التّعامل مع الملفات البرمجية بشكل أسرع وأكثر إنتاجية. لماذا vim ؟ معظم الذين يجربون هذا المحرر لأول مرة سرعان ما ينعتونه ب “محرّر من العصر الحجري” خاصة بواجهته التي قد تبدو للوهلة الأولى “سيّئة”، والكثير ممّن لا يعرفونه جيّدا يقولون أنه لا يستحق أن يسمى محرّرا إمّا لصعوبة أوامره أو لأسباب أخرى عادة ما تكون مبنية على قلّة المعرفة، فالأوامر ليست صعبة وتستحقّ منك تعلّمها بكلّ تأكيد. لقد وقعتُ في هذا الفخ لكنّني سرعان ما سحبت كلامي بعد أن علمت أنّه من المحرّرات الأكثر استعمالا من طرف المبرمجين، مُدراء الخواديم، بل ويستخدمه عدد لا بأس به من الكتّاب (بالّلغة الإنجليزيّة) للتّدوين في مدوناتهم أو كتابة مقالات وغير ذلك، ولا أظنّني أملك مخزونا كافيّا من الكلمات لوصفه فهو في النّهاية المحرّر الغامض الذي ستتعلّم المزيد عنه كل يوم. معظم الذين يقولون أن المحرّر سيّء لم يجرّبوه في الأساس أو أنّهم لم يدرسوه بشكل جدي، الشّيء الذي ستتفاداه أنت بعد قراءتك لهذا الدّرس. وإليك بعضا من الأسباب التي قد تدفعك إلى تعلّمه 1. لأنّه ممتع أهمّ الأساب التي قد تدفعك لتعلّم vim هو المتعة التي ترافقك أثناء كتابة شيفراتك البرمجية وتعديلها، عند تعَوّدِكَ على إستعمال المحرر ستصل إلى مرحلة يكون فيها التحرير كلعبة بين يديك. 2. لأن الكثير من المبرمجين يستعملونه محرر vim ليس مجرد محررًا بسيطًا، بل هو محرر ذو قدرات عالية وخير دليل على ذلك هو العدد الكبير من المبرمجين الذين يستعملونه، إذ في أحد الإحصائيات فإن أكثر من نصف مبرمجي لغة Ruby وهي لغة كائنية OOP يستعملون vim وحوالي الثلث من مبرمجي Python أيضا يستعملون Vim. الإحصائيتان شملتا عددا من مبرمجي لغتي Ruby وPython فقط وهما لغتان رغم شهرتها إلا أنهما تبقيان أقل شهرة من لغات كـ ++C ، C وJavascript وغيرهم، فما بالك بعدد المستخدمين من المبرمجين باللغات الأخرى. 3. لأنّه قابل للتّخصيص يمكنك تخصيص vim إلى درجة كبيرة حيث يمكنك تغيير الأوامر أو إضافة أخرى جديدة بالإضافة إلى كمية الإضافات الهائلة المتاحة له والتي تجعله قادرا على تنفيذ مهام ووظائف جديدة تُبرمج هذه الإضافات بلغة خاصة تسمى فيمسكريبت vimscript كما يدعم برمجة الإضافات بلغات أخرى مثل (python ; ruby ; tcl ; lua ..) الخلاصة هنا أن محرر Vim يتمتع بالشهرة والكفاءة وقابلية الإستخدام التي ستدفعك إلى تجربته وتعلّم التّعامل معه ففي النهاية إتقان مهارة جديدة أمر يصقل خبرات المبرمج. تنصيب المحرر لتنصيبه على توزيعات جنو/لينكس المبنية على الدبيان (Ubuntu ،Linux Mint ،Elementary OS...)، طبّق هذا الأمر في الطرفية Terminal: $ sudo apt-get install vim لتنصيبه على توزيعة فيدورا، طبق هذا الأمر في الطرفية Terminal: $ sudo yum install vim لتنصيبه على Windows، يمكنك تحميل Gvim، ولتنصيبه على Mac فإن Vim يأتي مثبتا مُسبقا على أنظمة الماك، لذلك كل ما عليك فعله هو كتابة vim في الطرفية Terminal لتشغيله. أهم الأوامر قبل فتح ملفّ يمكنك فتح أي ملف تريده من الطّرفية Terminal بكتابة: vim file.txt غيّر file.txt إلى الملف الذي ترغب في فتحه إن لم يكن موجودا فسيُنشئ vim ملفا بذلك الإسم. ملاحظة: إذا كنت على لينكس أو Mac فتأكّد من أنك على المجلد الصحيح بإستخدام أمر pwd ويمكنك إستخدام أمر ls لعرض الملفات المتاحة كما تستطيع التنقل بين المجلدات بإستخدام: cd directory مع تغيير directory إلى إسم المجلّد وللرّجوع إستخدم: cd .. وللرّجوع إلى مجلّد المنزل قم بإدخال أمر cd فقط أول ما ستقوم به عند فتح vim هو الضغط على زر وهو الذي سيمكنك من الدخول إلى نمط الكتابة ويمكنك كتابة ماتشاء في الملف. [ i] للدخول إلى نمط الكتابة إضغط على. [o] للدخول إلى نمط الكتابة في سطر جديد. [Esc] للخروج من نمط الكتابة إلى نمط الأوامر. [v] للدخول إلى النمط المرئي ومنه يمكنك تحديد نص أو مجموعة كلمات. أنماط (أوضاع) Vim نمط الكتابة Insert mode نمط الكتابة يمَكّنكَ من كتابة وتعديل ما تشاء. وهو النمط الأساسي (الجزء الذي لا يحتاج إلى تعلّمه). النمط المرئي Visual mode في النمط المرئي يمكنك تحديد النصوص والكلمات بإستعمال طُرق الإنتقال (التي سنذكرها لاحقا)، وتطبيق الأوامر عليها سواء حذفها أو نسخها أو تعديلها... نمط الأوامر Command mode نمط الأوامر هو النّمط الذي يخوّل لك إعطاء الأوامر للمحرر, سواء كان حذف كلمة أو حذف جملة أو تغيير شيء ما أو أي شيء من هذا القبيل وهو النمط الإفتراضي. أوامر Vim فتح ملف بإسمه (إذا كان موجودا في نفس المجلد): :e file.txt إذا كان في مجلد آخر: :e directory/file.txt إذا أردت تصفح الملفات الموجودة وإختيّار ملف: :e . للحفظ تحت إسم آخر: :w إسم_الملف حفظ الملف: :w الحفظ والمغادرة: :wq المغادرة بدون حفظ: :q! إستعمال أوامر النظام داخل vim يمكنك إستعمال أوامر النظام في vim كالتالي: :! cmnd مثلا لنقل أنك تعمل على صفحة Html وتريد عرضها بمتصفح فايرفوكس، كل ما عليك فعله هو: :! firefox index.html يمكنك الإنتقال بين الأحرف باستخدام الأسهم على لوحة المفاتيح أو يمكنك استعمال الأحرف: k أعلى j أسفل h يسار l يمين تستطيع القفز من مكان إلى آخر بإضافة عدد الأحرف أو الأسطر المراد تجاوزها قبل كل سهم، مثلا إذا أردت الإنتقال 20 حرفا إلى اليمين: 20l الإنتقال 35 سطرا إلى الأسفل: 35j الإنتقال إلى بداية الملف: gg الإنتقال إلى نهاية الملف: G الإنتقال إلى بداية السطر: 0 الإنتقال إلى نهاية السطر: $ الإنتقال إلى سطر معين (السطر 15 في هذا المثال): 15gg للتراجع عن تعديل: u للتراجع عن التراجع: Ctrl + r نسخ سطر: yy حذف سطر: dd نسخ، حذف عدد من الأسطر (4 في هذا المثال): 4dd 4yy حذف كلمة (ضع المؤشر على أول الكلمة): dw yw للنسخ للقص يمكنك إستبدال d و y بـِ x للصق الجزء المنسوخ أو المقصوص: p لتحديد جزء من النّص: أدخل إلى النمط المرئي بإستعمال Ctrl + v ثم إنتقل بإستخدام الأحرف hjkl أو الأسهم لتحديد ما تريد. التعامل مع النص المحدد: للتعامل مع النص المحدد يمكنك ببساطة إستعمال الأحرف y للنسخ و d للحذف و x للقص. وللبحث عن نص ما: /Search_query إستبدل Search_query بما تبحث عنه. التعامل مع عدة ملفات في آن واحد: يمكنك تقسيم الشاشة إلى ما تشاء من الأجزاء والتعامل مع الملفات - الأمر أشبه بالنوافذ المبوبة tabs (الموجودة كذلك في vim). لتقسيم الشاشة أفقيا : :sp عموديا : :vs للتّنقل بين أقسام الشاشة : Ctrl + ww أو: Ctrl + w + الأسهم التّبويبات Tabs لفتح عدّة ملفات كل ملف في تبويبة يمكنك تنفيذ الأمر التالي (في الطّرفيّة Terminal): $ vim -p file1 file2 file3 إنشاء نافذة جديدة: :tabnew إغلاقها: :tabc الإنتقال إلى التّبويبة التالية: :tabn (n إختصارا ل next) الإنتقال إلى التّبويبة السابقة: :tabp (p إختصار ل previous) يمكن إستعمال الأرقام فمثلا للقفز إلى التّبويبة الثالثة: :tabn3 الذهاب إلى التّبويبة الأخيرة: :tabl الرجوع إلى التّبويبة الأولى: :tabr لعرض التّبويبات: :tabs التّعامل مع التّبويبات هكذا أمر متعب أليس كذلك ؟ كل ما عليك فعله هو إنشاء إختصارات لها وهذا سكريبت جاهز يقوم بالأمر: فقط أضف الأسطر إلى ملف vimrc. الموجود في مجلّد المنزل HOME$ (ربما قد لا يكون موجودا، عليك إنشاءه إن لم يكن موجودا): map <C-t><up> :tabr<cr> map <C-t><down> :tabl<cr> map <C-t><left> :tabp<cr> map <C-t><right> :tabn<cr> ملاحظة: بما أن الملف يبدأ بنقطة فهو مخفي، إذا حاولت رؤيته من متصفح ملفات فعليك أن تظهر الملفات المخفية (Ctrl+h). ملاحظة لمستخدمي Windows، للحصول على ملف vimrc عليك القيام بالتالي: افتح قائمة ابدأ (start) ثمّ "تشغيل" (run) بعد ذلك ألصق الأمر التالي: %userprofile% ثمّ قم بإنشاء ملفّ باسم: _vimrc الإختصارات الآن هي كالتالي : Ctrl + t + الأسهم الأعلى والأسفل للتنقل بين التبويبة الأولى والأخيرة على التوالي، وأما الأسهم يمين ،يسار فهي للتنقل بين التبويبات بشكل عادي (التالية ، السابقة). بعض الأسطر التي قد تَوَدُّ إضافتها لملف vimrc. set encoding=utf-8 set number set hlsearch set hlsearch لتضليل النص الذي تبحث عنه set number لإضافة الأرقام في الجانب ملاحظة: يمكنك إظهار الترقيم فقط بكتابة: :set number وهذه صورة للمحرر بعد إضافة setnumber إلى ملف vimrc: خاتمة vim يمتلك العديد من الأوامر والمميزات، العديد منها بحيث لا يستطيع مقال واحد شرحها، لذلك فهذا المقال مجرد مدخل إلى عالم محرر Vim و أنصحك بقراءة المزيد عنه إذا كنت مهتما، سنتعرف في الجزء الثاني من أساسيات Vim عن معلومات إضافية عن هذا المحرر وكيفية تطويعه لمتطلباتك اليومية.
-
محرّرُ Vim يتمتّع بشهرة واسعة، بفضل هذه الشهرة أصبح يُعدّ من أوائل المحرّرات التي يُمكن للمستخدم أن يُخصّصها ويُضيف عليها كل ما من شأنه أن يجعل التّحرير مُريحاً وسهلاً سواء شكلاً أو أداءً. لقد تحدّثنا سابقاً عن الشّكل والمظهر، وقد حان الوقتُ للغوص في أعماق الإضافات التي تجعل التحرير لعبة في كثير من الأحيان بل هناك بعض الإضافات التي ستندم على أنّك لم تعرفها في كلّ هذه السنين منذ بداية استخدامك للحاسب، مُعظم الإضافات تتّبع فلسفة 'اجعلها أسرع وأبسط' وهذا يعني أنّك ستجدُ ضالّتك في هذا الدّرس إذا كنت تبحث عن تحسين أدائك وزيادة إنتاجيّتك إذ ستتعلّم كيف تديرُ الإضافات من تثبيت وتحديث إلى طرق حذفها. صحيح أن المُحرّر ممتازٌ جدّا في ما يتعلق بزيادة الإنتاجية حتى بدون أي إضافات (كما رأينا في الدّرسين السّابقين)، لكنّك بالإضافات قادرٌ على أخذ المُحرّر إلى المستوى المُتقدّم بشكل جدّ ملاحظ. ماهي إضافات vim بالضبط؟لا أظنّ أنّك قد تسألُ هذا السؤال، فنحن محاطون بالإضافات في كلّ مكان من إضافات المتصفّح إلى تطبيقات الهواتف الذكيّة، لكن في حال سألت هذا السّؤال جديّا، ففكّر في الإضافة على أنها أداة مساعدة تؤدّي عملا معيّنا أو تساعدُ في القيام بأمر ما، الشيء الذي يُسهّل ويُسرع عملية الإنتاج، وقد أعطيتك إضافات المتصفّح كمثال، و هذا بالضبط ما تفعله إضافات vim، أي تسريع عملية الإنتاج (الكتابة). الإضافات الخاصّة بالمحرّر يُمكن أن تكون عامّة أو مُخصّصة للغة برمجة ما، لبيئة ما أو إطار عمل معيّن. معظم الإضافات مُطوّرة من مُبرمجين مُستقلّين عن مُطوري المُحرّر، وكذلك تستطيع أنت أن تُبرمج إضافة خاصّة بك سواء بلغة Vimscript أو بلغتك إذا كنت تجيد لغات مثل روبي، بايثون، Lua. مع ملاحظة أن الإضافات التي لم تُبرمج بلغة Vimscript عادة ما تكون بلغة بايثون. تثبيت الإضافاتأولا عليك أن تعرف بأن الإضافات ليست إلا ملفّات برمجيّة وتنصيبها لمُحرّر Vim أمر في غاية السهولة، ويُمكن ذلك بعدّة طُرق سواء بأداة pathogen الّتي تسهّل إدارة ملفّات الإضافات البرمجيّة حيثُ تقوم بتنظيم الملفّات والإضافات لأجل تَيْسِيرِ تحديثها وحذفها. كذلك يُمكن فعل نفس الأمر باستخدام أداة Vundle التي استُلهمت من مشروع Bundler الخاص بإدارة جواهر روبي Rubygems. مع Vundle يمكنك ضبط إعدادات الإضافات في ملف vimrc، يُمكنك تثبيت، تحديث، البحث، وحذفُ الإضافات. هناك العديد من الأدوات الأخرى التي تؤدّي نفس الغرض، لكن pathogen و Vundle هما الأكثر استخداماً، وسأريك كيف تستخدمهما معاً ويمكنك اختيار أي واحدة منهما، لكنّي سأعتمد فقط على Vundle في الدروس القادمة التي سأتناول فيها استعمال الإضافات المُختلفة. 1. تثبيت الإضافات باستعمال أداة pathogenأداة pathogen تعتمد مبدأ البساطة المطلقة، إذ لا تتوفر على الكثير من المهام والتعقيدات وتُمكّنك من تثبيت الإضافات بنقلها إلى مجلد: .vim/bundle/pluginحيثُ plugin هو ملف الإضافة التي تُريد تثبيتها. لتثبيت الأداة حمّل ملفّ pathogen.vim ثمّ أنقله إلى مجلّد : ~/.vim/autoloadلديك أيضا خيار التثبيت عبر سطر الأوامر (تحتاج إلى أداة curl): تثبيت أداة curl على Gnu/Linuxعلى Debian وما بُني عليها: $ sudo apt-get install curlعلى Fedora: $ sudo yum install curlتثبيت أداة curl على Windows: حمّل curl، بعد فكّ الضغط عن الملفّ انقل الملف المسمّى curl.exe إلى مجلّد %windir% للوصول إلى المجلّد افتح قائمة ابدأ ثمّ تشغيل (Run) ثمّ ألصق %windir% واضغط Enter. بعد الحصول على curl لأنظمة جنو/لينكس الخطوة التالية هي تطبيق الأمر التالي من الطّرفيّة (Terminal): $ mkdir -p ~/.vim/autoload ~/.vim/bundle && \ curl -LSso ~/.vim/autoload/pathogen.vim https://tpo.pe/pathogen.vimأما إذا كنت من مستعملي Windows فطبّق الأمر التالي في برنامج Cmd: > mkdir -p ~\vimfiles\autoload ~\vimfiles\bundle && \ curl -LSso ~\vimfiles\autoload\pathogen.vim https://tpo.pe/pathogen.vimبعد نقل الملفّات وانتهاء العمليّة تحتاج إلى إضافة الأسطر التالية إلى ملفّ vimrc: execute pathogen#infect() syntax on filetype plugin indent onالآن أنت قادرٌ على تثبيت أي إضافة تريد (المثال التالي يقوم بتثبيت إضافة NERDTree على توزيعات Gnu/Linux و Mac) $ cd ~/.vim/bundle && git clone https://github.com/scrooloose/nerdtree.git أمّا إذا كنت تستعمل cmd في Windows، فهاك الأمر: > cd ~\vimfiles\bundle && git clone https://github.com/scrooloose/nerdtree.gitأداة Gitمعظم الإضافات مستضافة على GitHub لذلك فأداة git ضرورية للتحميل وهي متوفرة لمستخدمي جنو/لينكس على المستودعات الرّسمية ويمكنك تثبيتها تماماً كما تبّثنا أداة curl: لـ Debian وما بُني عليها: $ sudo apt-get install gitلـ Fedora: $ sudo yum install gitلمستخدمي وندوز حمل git هذا إذا أردت تثبيت الإضافات من الطرفيّة، أمّا إذا أردت أن تقوم بالأمر بشكل يدوي فهناك دائما طريقة أخرى: أولاً عليك تحميل الملفّات مضغوطة: https://github.com/scrooloose/nerdtree/archive/master.zipحيثُ scrooloose وnerdtree تتغيّر حسب اسم الإضافة واسم المستخدم الخاص بمُطوّرها على Github. فك ضغط الملفّ ثمّ انقل ما بداخله إلى مجلّد bundle. 2. تثبيت الإضافات باستعمال أداة Vundleأداة vundle شبيهة بأداة pathogen وتؤدّي نفس الغرض تقريباً، لكن أداة Vundle تستطيع فعل كثير من الأشياء التي لا تستطيع pathogen فعلها، مثلا في Vundle يُمكنك البحث عن الإضافات ، حيث تعرض لك الأداة جميع الإضافات الموافقة لما أدخلته وتعطيك إمكانية التنقّل بين نتائج البحث واختيار الإضافة المراد تثبيتها وبضغطة زر تُثبّتُ الإضافة، يُمكنك اعتبار الأداة بمثابة مدير حزم مثل apt-get في توزيعة أبنتو وyum في توزيعة فيدورا. أداة Vundle تمكنّك من : ضبط إعدادات الإضافات من ملفّ vimrc مباشرة.تثبيت الإضافات.تحديث الإضافات المثبتة.البحث عن الإضافات المتوفّرة.حذف الإضافات.القيام بكلّ ما سبق باستعمال سطر أوامر بسيط وسهل.تثبيت أداة Vundleلتثبيت الأداة عليك أن تتوفر على أداة git (أنظر فصل أداة Git أعلاه)، وعليك أيضاً أن تتوفر على أداة Curl، حيثُ تُستخدم للبحث من طرف Vundle. على Gnu/Linux أو ماك، طبّق الأمر التالي على الطّرفية: $ git clone https://github.com/gmarik/Vundle.vim.git ~/.vim/bundle/Vundle.vimبعد تطبيق الأمر أعلاه، أضف هذه الأسطُر إلى ملفّ vimrc: set nocompatible filetype off set rtp+=~/.vim/bundle/Vundle.vim call vundle#begin() Plugin 'gmarik/Vundle.vim' Plugin 'user/plugin.vim' Plugin 'L9' filetype plugin indent on call vundle#end()التثبيت على نظام Windows، طبّق الأمر التالي في سطر الأوامر Cmd: cd %USERPROFILE% && git clone https://github.com/gmarik/Vundle.vim.git vimfiles/bundle/Vundle.vim && gvim _vimrcثمّ أضف الأسطر التالية إلى ملفّ vimrc: set nocompatible filetype off set rtp+=~/vimfiles/bundle/Vundle.vim/ let path='~/vimfiles/bundle' call vundle#begin(path) Plugin 'gmarik/Vundle.vim' Plugin 'user/plugin.vim' Plugin 'L9' filetype plugin indent on call vundle#end()مع مراعاة أن الأسطر باللون المُختلف غير ضروريّة وهي تعني: Plugin 'user/plugin.vim': تثبيت إضافة من github مُباشرة حيث user هو اسم مستخدم المُطوّر و plugin.vim اسم الإضافة.Plugin 'L9': تثبيت إضافة في حال توفّرها على Vimscripts.ملاحظة: بعد إضافة أي سطر لتثبيت إضافة ما عليك حفظ الملفّ والخروج من vim ثمّ تطبيق الأمر: :PluginInstallوسيبدأ Vundle بتثبيت الإضافات واحدة تلو الأخرى. الآن لتثبيت أي إضافة باستخدام Vundle يمكنك الاختيار بين الطّرق التالية: تثبيتُ إضافةالتثبيت من ملفّ vimrc.لقد رأينا هذه الطّريقة من قبل، فقط إضافة أحد الأسطر السّابقة أعلاه لملفّ vimrc ثمّ الخروج من Vim وفتحه مجدّدا ثمّ تنفيذ الأمر PluginInstall كفيل بالأمر. التثبيت من المُحرّر مباشرة:Vundle يُوفّر لنا عدة أوامر جاهزة لاستخدامها داخل المُحرّر ومن بين هذه الأوامر أمر PluginInstall، ويُمكنك استعماله في المُحرّر على النّحو التالي: :PluginInstall pluginحيثُ plugin هو اسم الإضافة، ويمكن أن يكون على شكل user/plugin في حال كانت الإضافة مستضافة على GitHub. الأمر سيفتح تقسيما جديدا للشاشة وسيبدأ بعملية التثبيت مباشرة الوقت المُستغرق يعتمد على حجم الإضافات التي تُحاولُ تثبيتها وعلى سرعة الأنترنت لديك. عند الانتهاء يُمكنك إغلاق التقسم باستخدام: :qأو :bdeleteالبحث عن إضافةعرض جميع الإضافات التي يُمكن لـ vundle تثبيتها إذا كنت فضولياً فمن الجيّد أن تطّلع على كميّة الإضافات الموجودة لمحرّر vim وأسمائها، لفعل ذلك نفّذ الأمر التالي على المُحرّر: :PluginSearch! إلى حين كتابة هذا الدّرس هناك أكثر من 4000 إضافة يستطيع Vundle تثبيتها، الإضافات يُمكن أن تكون عامة ومفيدة لجميع المُبرمجين، للغة معيّنة، لبيئة ما أو حتى لإطار عمل معيّن. تحديثُ إضافةبعد تثبيت إضافة ما أنت جاهز للعمل بها واستغلالها لتحسين أداء المُحرّر، لكن بعد مدة معيّنة سيضيف المطوّر بعض التحسينات لإضافته، وكلّنا ذاك الذي يرغبُ في الجديد المحسّن، لذلك أداة Vundle تُوفّرُ لنا أمر PluginUpdate لتحديث الإضافات. لتحديث جميع الإضافات: :PluginUpdateلتحديث إضافة معيّنة: :PluginUpdate pluginلتحديث أكثر من إضافة يُمكنك فصلُ أسمائها بمسافة: :PluginUpdate plugin1 plugin2يمكنكَ استخدام أمر PluginInstall مع إضافة علامة تعجّب(!) لتحديث جميع الإضافات (ليس ضروريا، مُجرّد أضف لمعلوماتك): :PluginInstall!وهو أمرٌ يخبرُ Vundle بالقيام بعمليّة إعادة تثبيت، ما يجلبُ أحدث الإصدارات. حذف إضافةقد تشعرُ أنّ الإضافة التي قُمت بتثبيتها مؤخّراً ليست مفيدة بالمرّة أو أنها تُسبب مشاكل للمحرّر، لا مشكلة يمكنك التخلّص منها باستخدام Vundle. لحذف إضافة عليك أولاً أن تعرض الإضافات المُثبّتة، لقيام بذلك طبّق الأمر: :PluginListبعد تطبيق الأمر سيظهر قسم في الشاشة يحوي جميع الإضافات المُثبّتة تصفح باستخدام أسهم لوحة المفاتيح واختر الإضافة التي تُريد حذفها ثمّ اضغط على زرّ D. ستظهر علامة – بجانب اسم الإضافة، هذا يعني أنّ الإضافة حُذفت ويمكنكَ الخروج، إذا أردت التراجع يمكنك ذلك باستخدام أمر التثبيت ما دام اسم الإضافة في ملف vimrc أو يُمكنك حذف اسمها في الملفّ إذا أردت تأكيد عدم رغبتك في رؤية وجه تلك الإضافة مُجدّدا. حذفُ مجموعة من الإضافات دُفعة واحدةيُمكنك حذف مجموعة من الإضافات بإزالتها من ملفّ vimrc ثم تنفيذ الأمر التالي: :PluginCleanسيقوم Vundle بإظهار رسالة تأكيد أكتب y ثمّ Enter للتأكيد، الأمر سيقوم بحذف جميع الإضافات التي لا توجد في ملفّ vimrc. حذفُ جميع الإضافات دُفعة واحدة (احذر!)إذا كنت تُريد أن تعود إلى زمن vim الخالص بدون أي إضافة، يُمكنك حذف جميع الإضافات بإزالتها من ملفّ vimrc ثم تنفيذ الأمر التالي: :PluginCleanسيقوم Vundle بإظهار رسالة تأكيد أكتب y ثمّ Enter للتأكيد، الأمر سيقوم بحذف جميع الإضافات التي لا توجد في ملفّvimrc أي جميعها في حالتنا. خاتمةتعرّفنا في هذا الدّرس على كيفيّة إدارة الإضافات ولم يبق لنا إلا شرح أهم الإضافات التي من شأنها أن تزيد من إنتاجيتك، وتُحسّن بها أداءك. الدرس القادم سيكون عن الإضافات التي يحتاج إليها كل مبرمج بغضّ النظر عن اللغة التي يتعامل بها مع برامجه وتطبيقاته.
-
لقد تعرّفنا معا في الدرس السابق على أساسيّات التّعامل مع النّصوص والملفّات في محرر vim حيثُ شرحتُ أوامر متعلّقة بالتّعديل والحذف كالقصّ واللّصق والحذف، وتعرّفنا على مبادئ الانتقال بين الكلمات، الأسطر، التّبويبات وتقسيمات الشّاشة؛ والآن حان وقت المزيد من الأوامر -المتقدمة نسبيّا- التي ستساعدك على التعرف على المحرر بشكل أعمق. معلومات الملفإذا قمت بفتح ملف ما وتريد معلومات عنه فكل ما عليك فعله هو الضغط على Ctrl+g أو تنفيذ الأمر: :fبعد تنفيذ الأمر ستلاحظ في أسفل الملف ستلاحظ المعلومات التالية: اسم الملفعدد أسطر الملفإحداثيات ومكان المؤشّر في الملف التّعامل مع الفقرات1. الأزرار a, o, s | A, O, S للانتقال إلى نمط الكتابةالزر a سيقوم بالانتقال إلى وضع الكتابة بعد موضع المؤشّر مباشرة. للانتقال إلى وضع الكتابة بعد جملة كاملة أو فقرة معيّنة (بـأكملها): Aالزر o (كما ذكرنا سابقا) ينتقل بك إلى نمط الكتابة في سطر جديد (تحت المؤشّر)، أما إذا كنت ترغب بالدّخول إلى نمط الكتابة في سطر جديد فوق المؤشّر فاستعمل: Oالزّرّ s سيقوم بحذف الحرف الذي يوجد فيه المؤشر وينتقل بك مباشر ة إلى وضع الكتابة، أي أن الزر s له دور التعديل. إذا أردت تعديل جملة كاملة أو فقرة معيّنة (بـأكملها): S2. الزرّان r و R للانتقال إلى وضع الاستبداليوجد وضع (نمط) آخر في vim ألا وهو وضع الاستبدال (Replace) يمكنك أن تحزر فائدته من اسمه فقط، ويمكنك أيضا ملاحظة أن الزرّان المسؤولان عن الولوج إليه هما أول حرف من كلمة Replace. النّمط بكل بساطة يُخوّلكَ لاستبدال ما تشاء سواء حرفا واحدا في كل مرّة أو مجموعة في آن واحد. بحيث : الزر r لاستبدال حرف واحد فقط.الزر R لاستبدال عدة حروف في آن واحد.3. المزيد عن الانتقال بين الجمل والفقراتلقد ذكرنا سابقا (الدرس السابق) أساسيّات التّنقل في ملفّ معيّن، سنغطّي المزيد في هذه الفقرة. الانتقال إلى الفقرة التالية، استعمل { . تريد عكس الأمر؟ Ctrl+o سيفي بالأمر. تحريك المؤشر بين الجمل:للانتقال بين الجمل ببساطة استعمل كلا من ( و ) حيث ) للانتقال إلى الجملة التالية و ( للرجوع إلى الجملة السابقة. استعمل الأرقام إذا كنت ترغب بالقفز وتجاوز الجمل، مثلا 3) للانتقال إلى الجملة الثالثة بعد المؤشر (يمكنك تغيير الرقم 3 بما تشاء). للانتقال إلى حرف معيّن:fxحيث x هو المكان الذي نرغب بوضع مؤشر الفأرة عليه. يمكنك استعمال الأرقام أيضا، مثلاً: 3fxفي هذا المثال نُخبِرُ vim بأن ينتقل إلى حرف x الثّالث (يعني تجاوز أوّل حرفين x وانتقل إلى الثّالث). 4. تعليم منطقة معيّنة في ملفكتخيل أنك كتبت كمّا كبيرا من الشيفرة في ملفّك، وأثناء كتابتك في لحظة معينة تذكّرت أنك تحتاج إلى إضافة شيء ما بالأعلى، لنقل بداية الملف، ستقول الأمر سهل كل ما عليّ فعله هو الضغط على gg للانتقال إلى الأعلى ثم أضيف ما أشاء، نعم الأمر يبدو جيّداً، لكن ماذا لو أردت العودة إلى المكان الأول الذي كنت فيه قبل الانتقال إلى الأعلى؟ هنا يأتي دور التعليم أي وضع علامة في مكان ما لتمييزه بزر معين. لاستخدام التعليم قم بالضغط على m (اختصارًا لـِ mark) ثم الزر الذي تريد التعليم به. بالمثال يتضح المقال: إذا كان مؤشر الفأرة مثلا في منطقة ما في وسط الملف (على حرف معيّن بالضبط) وتريد تعليمه بزر a : maالآن انتقل إلى أي مكان ترغبه في الملف وكلما أردت العودة إلى السطر المعلّم بزر a ستضغط على a'، أما إذا كنت ترغب في العودة إلى موضع المؤشّر بالتّحديد فاضغط على a`. يمكنك استعمال أي حرف من ( a-z A-Z ) بشرط أن يكون حرفاً واحداً فقط أي أنّك تملكُ ما مجموعه 52 زرا لتعليم مختلف مناطق الملف. 5. استعمال الأرقام لتكرار العمليّاتإلى الآن، تعرّفنا على استعمالات عديدة للأرقام لكن أهم ما يجب عليك معرفته بخصوص الأرقام هو أنك تستطيع أن تستعملها لتكرّر عملية ما بعدد لا نهائي من المرّات. مثلا لنقل أنّ لدينا جملة في ملفنا، ننسخ الجملة باستعمال yy (اُنظر الدرس الأول) ولكنّنا لا نريد لصقها مرة واحدة فقط بل العديد من المرات (أي تكرارها في الملف n مرّة). للقيام بذلك طبّق الأمر التالي: npبحيث n هو عدد المرات التي ترغب بلصق الجملة في الملف (بعد مؤشر الفأرة مباشرة). أقرب مثال أستحضره حاليا هو القوائم في لغة HTML، لنقل أنّك تحتاج إلى إضافة 10 قوائم في الملف. هل تعتقد أن كتابتها بشكل يدوي سيفي بالغرض؟ (إن كان جوابك نعم فاستعدّ للتضحية بحصة لا بأس بها من وقتك الثمين). بالطبع الجواب هو لا. لذلك كل ما عليك فعله هو كتابة السطر الأول: <li> Item in The List </li>ثم انسخ السطر باستعمال yy ثم ألصقه 10 مرّات باستعمال: 10p طبّقت الأمر 1000000p وحصلت على مليون سطر (نواة لينكس؟) وملف بحجم 28Mb ولا زال vim يستجيب في أجزاء من الثانية، لا تغيير في السرعة حتى عند الحفظ (لا أظن أن أي بيئة تطوير قادرة على فعل نفس الشّّيء خلال جزء من الثانية، وهذا سبب قويّ لاستخدام المحرر، أليس كذلك؟). ملاحظة: هذا مجرد مثال والتطبيقات تكاد تكون لا نهائية لذلك الدّور عليك لتستكشف تطبيقات الطريقة وهذا الأمر متروك لخيالك ومدى رغبتك في التّعلّم . 6. التّراجع وإلغاء التراجعلقد تحدّثتُ أيضاً عن أساسيّات هذه الخاصية في الدرس السابق (u للتراجع عن تعديل ما و Ctrl+r لإلغائِه)، وقد حان الوقت الآن لبعض العمليّات المتقدّمة. تراجع عن جميع التعديلات التي قمت بها قبل x دقائق من الآن: :earlier 2mهذا الأمر يقوم بالتراجع عن جميع التعديلات التي قُمت بها منذ دقيقتين، وبالطبع يمكنك استخدام الثواني كوحدة زمنية. :earlier 25sولعكس العمليّة استعمل later: :later 3mهذه الأوامر مفيدة إذا كنت تقوم بتعديلات عديدة في وقت قصير ولكنّك عادة لا تتذكّر الأوقات بالتّحديد، الرجوع بحسب عدد التّعديلات طريقة أفضل(نعم خاصيّة أخرى). للتّراجع بحسب عدد التّعديلات: :undo 5الأمر أعلاه يقوم بإلغاء آخر خمس تعديلات. عرض قائمة التراجعات: :undolistمحرك البحث في vimvim يمتلكُ محركَ بحث مدهش وقوي يمكنك إعداده وتخصيصه كيفما تشاء، حيث يمكنك إخبار المحرّر بأنك تُريد أن يتجاهل حالة الأحرف (مثلا a وA كلاهما سيوافقان نتائج البحث)، ويمكنك أيضا إعداده لعرض النتائج بشكل فوري (يعني أن يقوم بالبحث بمجرد المباشرة بالكتابة). إخبار المُحرّر بأننا نريد بحثا فوريا: :set incsearchتجاهل حالة الأحرف: :set ignorecaseمثلا إذا قمت بالبحث عن “hello” : /helloستكون النتائج متوافقة مع كل من : Hello , hello , HELLO هذه الإعدادات لن تُسجّل إذا أغلقت المحرّر، وقد ذكرت في الدّرس السّابق أنك تستطيع إضافة أسطر إلى ملف vimrc. لكي تُسجّلَ الإعدادات بشكل افتراضي، حيث يكون كل شيء معدّا مسبقاً فور فتح المحرّر، يمكنك فعل ذلك الآن إذا كنت ترغب في ذلك. فقط افتح الملف (ملف vimrc) وألصق الأسطر التالية في الأسفل: set incsearch set ignorecaseملاحظة: للتنقّل بين عمليات البحث استعمل كلا من n و N. النّصوص داخل الأقواس، علامات التّنصيص والمعقوفاتvim يُوفّر مساعدةً قيّمةً للمبرمجين، حيث يحتوي على كمّ كبيرٍ من الأوامِر التي تُساعدهم على التعامل مع كتلِ التّعليمات البرمجية (code blocks)، إذ يمكّنكَ المحرّر من تعديل، حذف و نسخ كل ما يوجد بداخل الرموز مثل : {} , “ “ , () , `` , <> أو حتى تضمينها كذلك. التعديل1. تعديل ما بداخل الرمزين {}:يمكنك تعديل ما بداخل الرمزين { و } ببساطة وذلك باستعمال الأمر التالي: ci{ أو ci}ملاحظة: يجب على المؤشّر أن يكون إما على أحد الرمزين أو داخلهما (الملاحظة تنطبق على جميع الأوامر أسفله). 2. تعديل ما بداخل الرمزين <>:يمكن ذلك بنفس الطريقة: ci< أو ci>بنفس الطريقة يمكن تعديل ما بداخل الأقواس (): ci( أو ci)3. تعديل ما بداخل علامات التنصيص " أو ' أو ` :ci'أو ci” أو ci`4. تعديل ما بداخل وسوم HTML:يمكن أيضاً تعديل ما بداخل وسوم HTML بالأمر التالي: citالحذفالحذف يكون بنفس طريقة التعديل، فقط استبدِل c ب d، مثلا لحذف ما بداخل الرمزين {}: di{ أو di}أما لحذف ما بداخل وسوم HTML: ditالنسخالنسخ كذلك يتّبع نفس المنطق فقط استعمل y عوضا عن c و d مثلا لنسخ ما بداخل الأقواس (): yi( أو yi)في جميع الأوامر السّابقة تعلّمنا كيف ننسخ ما بالداخل فقط، فماذا لو أردنا تعديل، حذف أو نسخ العلامة أيضا؟ لفعل ذلك فقط استبدل i بـِ a، إليك مثالاً على ذلك: لنقل أنّنا نملك ملفّا يحتوي على الآتي: if (x == 0)إذا طبّقنا الأمر(المؤشّر على أحد القوسين أو بداخلهما): di)سيقوم المحرر بحذف "x == 0". أمّا لو طبّقنا الأمر: da)فسيقوم المحرّر بحذف "(x == 0)". وقِسْ على ذلك بقيّة الأوامر(التّعديل والنّسخ). المسافة البادئة للنّصوص (text indent)المسافة البادئة للأسطر تعدّ من أهمّ ما يجبُ على المبرمج الاهتمام به، إذ أن الشيفرة النّقيّة تعتبر أساساً لتحديد مدى مهارة المُبرمج، وليتمكّن الآخرون من فهم ما كتبه خاصّة إذا كان يعملُ في مشروع مفتوح المصدر. مثال على استعمال المسافات البادئة: if ... // ... else // ... endفي المثال أعلاه كتبنا جملة شرطية بدون أي مسافات بادئة. if ... // ... else // ... endأما في هذا المثال فقد قمنا بوضع مسافات بادئة لمزيد من التنسيق ولك أن تلاحظ الفرق.كما أن هناك لغات تُجبرُك على التّنسيق باستخدام المسافات البادئة (مثل Python) وإلا فلن يعمل البرنامج. في vim هناك العديد من الخيارات للتحكّم بالمسافات البادئة، أولا عليك تفعيل خيار "المسافات البادئة الذكيّ" (Smart indent)، ومن المفضّل أن تضعه في ملفّ vimrc: :set smartindentضبط عرض المسافة البادئةأقصدُ بعرض المسافة البادئة، المسافة التي ستكون بين بداية السطر والكتابة (اُنظر المثال): هذا نص بمسافة بادئة تساوي 0 هذا نص بمسافة بادئة تساوي 1 هذا نص بمسافة بادئة تساوي 4 هذا نص بمسافة بادئة تساوي 10لِضبط المسافة البادئة في vim طبّق الأمر التالي: :set shiftwidth=xحيث x عرض المسافة البادئة، من المُفضّل أن يكون 4 فقط. :set shiftwidth=4لوضع مسافة بادئة لسطرٍ ما استخدم: >ولإلغاء المسافة البادئة: <لوضع مسافة بادئة لمجموعة من الأسطُر: vjjj>حيث v للولوج إلى الوضع المرئي وj للانتقال للأسفل. لوضع مسافة بادئة لما بداخل المعقوفات ({})، إذا كان لديك جملة شرطيّة مثلا في لغة جافاسكريبت: function foo(){ //... //... //... //... }قد ترغب في وضع مسافة بادئة لجميع الأسطر التي تتواجد داخل علامتي { ... } للقيام بذلك ضع المؤشّر على إحدى العلامتين وقم بالضغط على: >i}النتيجة ستكون كالتالي: function foo(){ //... //... //... //... }أمّا إذا أردت أن تنسّق الملف بكاملهِ في آن واحد فالأمر التالي سيُعطيكَ ما تريده: gg=Gحيثُ gg لتحريك المؤشّر إلى أعلى الملفّ و = لإضافة المسافة البادئة وG للانتقال إلى آخر الملفّ. تخصيص مظهر vimمحرّرvim يعتمِد مبدأ البساطة، لكن هذا لا يجعله غير قابل على تخصيص مظهره، بل تستطيع أن تجعل المحرّر فخماً وذا تصميمٍ مُبتكرٍ خاصّة مع الكمّ الكبير من السمات المتاحة له، إذ أن هناك مبرمجون من مختلف أنحاء العالم ينشُرونَ سماتٍ للمُحرّر، وسنكشف بعضاً منها في هذه الفقرة. 1. تنصيب السّماتتنصيب السّمات على محرّر vim سهلٌ جدّاً، ولكنّه يختلف من نِظام تشغيل إلى آخر. لمستخدمي Gnu/Linux أو Mac OSقُم بتحميل المِلفّات (ملفّ واحد في غالب الأحيان) ثمّ اُنقل الملفّات بامتداد vim (مثلا color.vim) إلى المسار التالي : ~/.vim/colors/ملاحظة: علامةُ ~ اختصار يُمثّل مُجلّد المنزل الخاصّ بك. إذا لم يكن مُجلّد colors داخل مجلّد vim. ( المجلّد مخفيّ افتراضياً في متصفّح الملفّات لإظهاره اضغط Ctrl+h) موجوداً فقم بإنشائه. أو طبّق الأمر التالي في الطرفية (Terminal): mkdir ~/.vim/colorsلمستخدمي Windowsهذا هو مسار مُجلّد vim. : %userprofile%\vimfilesكل ما عليك فعله هو الذهاب إلى قائمة" ابدأ" (start) ثمّ " تشغيل" (run) بعد ذلك ألصق الأمر التالي: %userprofile%ثمّ قم بإنشاء مجلد vimfiles، وبعد ذلك أنشئ مجلّداً باسم colors هذا هو المجلّد الذي سنقوم بنقل ملفات السمات داخله. 2. تفعيل السّمات والتبديل بينهاالآن أنت جاهز لتفعيل السمات التي قمت بتحميلها (لا تقلق أنت لم تحمّل شيئا بعد)، بعد إكمال عمليّة نقل الملفّات المناسبة (ذات امتداد vim) إلى مجلد .vim/colorsأو %userprofile%\vimfiles\colorsيمكنك مباشرة فتح vim وتجربة السّمة التي ثبّتها بالأمر: :colorscheme themeسيتغيّر المظهر لكنّ الأمر لن يُحفَظ لحفظه ولإبقاء المظهر في كل مرة تفتح ملفّا في vim عليك إضافة السطر التالي في vimrc. : colorscheme themeبالطبع مع تغيير theme إلى اسم السّمة. 3. السّمات الافتراضيّةلنتحدّث الآن عن سمات المحرّر، في vim هناك سمات افتراضية موجودة أصلاً ولا تحتاج إلى تحميل يمكنك معاينتها وانظُر أأعجبتكَ أم تريد شيئا أفضل: سمة desert سمة blue سمة darkblue سمة delek سمة elflord سمة morning سمة pablo سمة slate هناك المزيد والمزيد من السّمات التي يُوفّرها لك المحرّر يمكنك تصفحها عبر الأمر: :colorscheme <tab>تحميل السّماتإن لم يُعجبك أي مظهر من مظاهر المحرّر الموجودة أعلاه، لا تقلق لا يزال هناك أمل، سأسرد لك بعضا من السّمات الموجودة خارج المحرّر وعليك تحميلها إذا أردت تفعيلها. وكما قلت سابقا لتفعيل أيّ سمة يكفي أن تنقل الملفّ بامتداد vim إلى مجلّد colors ثم نفّذ الأمر: :colorscheme themeحيثُ theme هو اسم الملف، مثلا إذا كان اسم الملفّ color.vim فيكفي أن تغيّر theme إلى color، ولإبقاء السّمة، أضف السّطر إلى ملفّ vimrc.. سمة Guardianهذه أحد السمات التي يمكن تحميلها مثلا، ثم تنصيبها بالطريقة التي قمنا بشرحها أعلاه: سمة Github هذه سمةٌ أخرى يُمكن تحميلها شبيهة بسمة موقع Github. سمة Vividchalk لتحميل السمة. سمة Candy تحميل السّمة ختامالقد تعرّفنا في هذا الدرس على قدراتِ vim المتقدّمة في التّحرير والتّعامل مع مختلف أنواع النّصوص والجمل، وأيضاً على طرق لتخصيص المحرّر، ولكنّه يحوي أكثر من هذا كلّه خاصّة أنّه مليء بالمفاجآت، والإضافات التي تستطيع أن تجعله أكثر من مجرّد محرّر!