خیلی وقته که دنبال یه ادیتور سبک و همه کاره هستم که هم بتونه واسه ادیت های دم دستی کمک حالم باشه و هم بشه باهاش نیمچه کدی زد.از مدت ها پیش می دونستم که ویم هم چین قابلیت های خوبی  داره.شاید پس ازسعی و خطاهای مختلفی که روی ادیتور های مختلف از Atom گرفته تا Sublime و Gedit‌ تا ویرایشگر های کنسولی ای هم چون نانو، هیچ کدوم به معنای واقعی یه ادیتور کامل نبودن و هر کدوم نقص های خودشونو داشتن.از اتم فوق العاده سنگین گرفته تا سابلایم غیر آزاد و Gedit لخت!

ولی ویم تقریبا تمام ویژگی های یه ادیتور خوب رو داره.از جمله:

  1. آزاد و متن باز هست.
  2. بسیار کم حجم هست و سریعه.(نسخه خامش بدون هیچ گونه پلاگینی در حد 2 مگابایته!)
  3. 25 سال سابقه داره و تقریبا بدون باگ و سرحاله.
  4. قابل توسعه است.(هزاران پلاگین آماده وجود داره که می تونید باهاش ویم رو مشابه ادیتورهای مدرن امروزی کنید)
  5. آموزش های فراوانی درباره ش وجود داره.(vimtutur یه هلپ استثناییه که تقریبا تو نرم افزارهای مشابه وجود نداره.کافیه امتحانش کنید تا مث آب خوردن ویم رو یاد بگیرید.)
  6. جامعه کاربری بزرگی پشتیبانش هستن و ازش استفاده میکنن.(اگه به مشکلی برخوردید،نگران نباشید.افراد زیادی هستند که میتونن بهتون کمک کنن!)

اینا رو گفتم اما خوبه از نواقص یا بدی های این ویرایشگر هم بگم.البته تعدادشون انقد کم هست که بشه ازشون چشم پوشی کرد.

  1. ساپورت نکردن درست و حسابی زبان فارسی.(هر چند تلاش هایی شده دراین زمینه.اما هنوز ناقصه)
  2. ویم،شیب یادگیری (learning curve )نسبتا زیادی داره.(البته شاید این نقطه ضعف محسوب نشه.ولی خوب واسه یادگیریش باید زمان بذارید!)

اینم یه عکسی که البته مزاح بیشتر هست تا واقعیت. :) به نظر من شیب یادگیری اولیه ویم در حد دو ساعته!

خوب بریم سراغ اصل مطلب.ویم رو چجوری یاد بگیریم؟جواب خیلی ساده است:vimtutor

البته اگه دنبال آموزش فارسی سرراست میگردید، آقای علیرضا امیر صمیمی،تو وبلاگ شون قبلا زحمت این کارو کشیدن و یه آموزش نسبتا مفصل تدارک دیدن که واسه شروع یادگیری خیلی خوب و مفیده.

بعد از یادگیری مقدماتی خود من هنوز یکم گیج میزدم.یعنی هنوز بخش هایی بود که دوست داشتم با نظم بیشتری پیش برن.یکی از این موارد، مدیریت پلاگین هاست.هر چند که در آموزش های آقای امیرصمیمی پیشنهاد میشه این کارو به صورت دستی انجام بدید.(واسه یادگیری اینکه پشت صحنه چه اتفاقی میفته)ولی در طولانی مدت ممکنه تعداد پلاگین هایی که استفاده میکنید زیاد بشن و مدیریت شون خیلی سخت باشه.البته فقط بحث اضافه کردن دستی پلاگین ها نیست.مشکلی که  این روش داره، نبود مکانیزم درستی برای گرفتن نسخه های جدید پلاگین هاست.اینجاست که مدیر پلاگین ها میان وسط.

مدیر پلاگین های زیادی و اسه ویم توسعه داده شدن که از معروف ترین هاشون میشه به:pathogen,vimPlug,Vundle,NeoBundle اشاره کرد.

از اونجایی که مدیر پلاگین VimPlug جدیدترین مدیر پلاگین موجود هست و از ویژگی های خوب زیر استفاده میکنه،خودم به شخصه ازش استفاده میکنم و آموزش استفاده شو براتون میذارم.

  1. آموزش استفاده از مدیر پلاگین Vundle

پس از یادگیری ویم میخواهم خیلی سرراست یک سری تنظیمات به ویم من اعمال شود.چه کنم؟

جواب خیلی ساده ست.از اونجایی که جامعه متن باز به اشتراک گذاری ایده هاشون معروف هستن تنها کاری که باید بکنید سرچ کردن درباره فایل های vimrc بقیه ست.البته بعضی از سایت ها مثل http://www.vim-bootstrap.com/ هستند که این کارو براتون راحت کردن.یه سری فایل vimrc از پیش آماده رو براتون مهیا کردن که بسته به زبانی که دارین استفاده می کنید میتونید اونارو دانلود کنیدو تو مسیر خونگی تون قرار بدید.(جالبی قضیه اینجاست که تمام فایل های این سایت از مدیر پلاگین vimPlug به صورت پیش فرض استفاده میکنن و شما لازم نیست هیچ کار خاصی انجام بدید.پس از اولین اجرای ویم، خودش شروع به دانلود تمامی پلاگین ها میکنه!)

ColorScheme ها رو از کجا پیداکنم؟

یه سایتی هست به نام http://vimcolors.com/ که کالر های معروف رو به اشتراک میذاره.میتونید ازش استفاده کنید.(برای نصب کالر ها هم لازم نیست چیزی رو دستی کپی کنید.با استفاده از مدیر پلاگین تون این کارو انجام بدید.)

پلاگین ها رو از کجا پیدا کنم؟

سایت های زیادی هستن که پلاگین ها رو به اشتراک میذارن.گیت هاب رو فراموش نکنید.یه سری سایت ها هم مثل http://vimawesome.com/ که کارشون به اشتراک گذاری پلاگین های ویم هست.سایت های دیگه ای هم هستن از جمله:

چطوری واسه ویم خودم یه شرتکات درست کنم؟

این کارو تو لینوکس بهش میگن ساخت deskop entry.کافیه تو مسیر هوم خودتون یه فایلی به نام vim.desktop بسازید و محتویات زیر رو داخلش بریزید:

#!/usr/bin/env xdg-open
[Desktop Entry]
Name=Vim
GenericName=Text Editor
TryExec=vim
Exec=gnome-terminal -e "vim "%F""
Terminal=false
Type=Application
Icon=vim
Categories=Utility;TextEditor;
StartupNotify=false
MimeType=text/english;text/plain;text/x-makefile;text/x-c++hdr;text/x-c++src;text/x-chdr;text/x-csrc;text/x-java;text/x-moc;text/x-pascal;text/x-tcl;text/x-tex;application/x-shellscript;text/x-c;text/x-c++;

اگر ترمینال تون gnome-terminal هست که فبها!وگرنه تو نت بگردین و تنظیمات مخصوص ترمینال خودتون رو پیدا کنید.واسه آیکون هم یه توضیحی بدم اینکه به صورت پیش فرض این دسکتاپ-انتری میره و در مسیر های زیر دنبال فایل عکسی به نام vim.png میگرده:

/usr/share/icons
~/.local/share/icon

که حاوی پوشه های تم نصب شده روی سیستم تون هم میشه.اگه احیانا متوجه شدید که دسکتاپ-انتری تون بدون آیکون هست.کافیه تو گوگل یه آیکون ویم با پسوند png بگیرید و بذارید تو یکی از مسیر های بالا.

بعد اینکه این فایل رو ساختید اونو تو یکی از مسیر های زیر بذاریدش:

/usr/share/applications
~/.local/share/applications

ملاحظه میکنید که تو منو یا دش تون لوگوی ویم میاد و اگه اجراش کنید تو یه کنسول جدید، ویم رو براتون باز میکنه.

چطوری میتونم یه اکشن به منوی فایل منیجرم اضافه کنم که بتونم فایل هامو با ویم به صورت مستقیم باز کنم؟

اگه منظورت Open with Vim تو راست کلیک فایل منیجرت هست خوب کار ساده ایه.من کلیات کاررو واسه نمو میگم.واسه بقیه فایل منیجرها هم هم چین امکانی وجود داره احیانا.(گوگل کنید!)

تو نمو، یه چیزی داریم به نام nemo_action که نقش همون Open with folan رو برامون بازی میکنن.واسه اینکه تو منوی راست کلیک نمو، یه ردیف اختصاصی واسه ویم بتونم بسازم باید فایلی با اون پسوند رو در یکی از مسیرهای زیر قرار بدم:

/usr/share/nemo/actions
~/.local/share/nemo/actions/

من اسم فایل مو vim.nemo_action گذاشتم و محتویات زیرو داره:

[Nemo Action]
Name=Open With Vim
Comment=Open This File With Vim
Exec=gnome-terminal -e "vim "%F""
Icon-Name=vim
Extensions=any;
Quote=doubl

نکته کلیدی خط آخر این فایل تنظیمات هست.جایی که:Quote=doubl

این مقدار باعث میشه فایل هایی که در اسم شون، space هست هم باز بشن.

حالا کافیه رو یه فایل متنی راست کلیک کنید.ملاحظه میکنید که اون ردیف مدنظرمون اضافه شده.

میخوام یه کاری کنم ادیتور پیش فرض سیستم به ویم تغییر کنه.چکار کنم؟

راه های زیادی واسه این کار وجود داره.

  1. تو اکثر میزکارها گزینه ای برای ست کردن اپلیکیشن های پیش فرض وجود داره.از اونجا میتونید بگین فایل های تکست تون با ویم باز بشن.
  2. راه کلی تر و بهتر تغییر محتوبات فایل mimeapps هست که تو مسیر ~/.config/mimeapps.list قرار داره.برای جایزیگینی هم میتوانید از RegX ها استفاده کنید.مثلا من میخواهم در فایل مزبور تمامی sublime_text_3 رو با vim جایگزین کنم:
:%s/sublime_text_3/vim/gc

برای اطلاعات بیشتر :

:help :substitute

چگونه فایل های .vimrc مختلف رو که برای زبان های مختلف آماده کرده ام، با توجه به زبان مربوطه لود کنم؟

برای این کار ویم یه مکانیزم درونی(که خیلی هم ساده س) در نظر گرفته به نام ftplugin:

  1. به ازای هر filetype باید یه فایل با فرمت: language.vim بسازید و اونو تو مسیر.vim/ftplugin قرارش بدین.
  2. اگه میخواین اول تنظیمات موجود در vimrc. مسیر خانگی تون اعمال بشن و بعد هر کدوم ازاین vimrc های اختصاصی اونا رو override کنن، کافیه اونا رو تو مسیر ~/.vim/after/ftplugin قرار بدین.
  3. برای اینکه این تنظیمات اعمال بشن باید دو تاخاصیت مهم رو تو فایل vimrc. موجود تو مسیر خونگی تون قرار بدید:
filetype plugin on
" Alternative: use the following to also enable language-dependent indenting.
filetype plugin indent on

برای اینکه متوجه بشین بعد از باز شدن فایل،filetype تون چیه دستور زیر رو بزنید:

:set filetype?

برای ست کردن فایل تایپ های مختلف:

:filetype on
:set filetype=html

نیاز دارم که همیشه یه سری فایل cheat sheet دم دستم باشه.از کجا میتونم گیر بیارم؟

خوشبختانه سایت های زیادی در این زمینه هستند:

  1. http://vimsheet.com/
  2. https://vim.rtorr.com/
  3. http://rayninfo.co.uk/vimtips.html
  4. https://www.fprintf.net/vimCheatSheet.html
  5. https://gist.github.com/mkaz/141394d9ee97bed99121
  6. https://www.ukuug.org/events/linux2004/programme/paper-SMyers/Linux_2004_slides/vim_tips/
  7. http://vim.wikia.com/wiki/Best_Vim_Tips

لینک های نیوویم:

http://veelenga.com/editors/how-to-start-using-neovim-instead-of-vim/

http://stenver.tech/vim-guides-how-to-set-up-neovim/

http://www.vim.org/scripts/script.php?script_id=2606

http://nvie.com/posts/how-i-boosted-my-vim/

http://vim.wikia.com/wiki/Keep_your_vimrc_file_clean

https://dougblack.io/words/a-good-vimrc.html

https://github.com/valloric/youcompleteme#ubuntu-linux-x64

http://www.bestofvim.com/plugin/

http://www.alexeyshmalko.com/2014/using-vim-as-c-cpp-ide/

http://www.thegeekstuff.com/2009/01/tutorial-make-vim-as-your-cc-ide-using-cvim-plugin/