چرا از vim استفاده می کنم؟
هر وقت که اسم vim میاد یه محیط سیاه رو تصور میکنید که وقتی واردش بشی دیگه بیرون اومدن ازش غیر ممکنه. و ممکنه براتون سوال باشه من چرا از vim استفاده میکنم. برای اینکه تصورتون از vim عوض بشه که براتون یه محیط سیاست این کانفیگ vim منه البته از نئوویم(neovim) استفاده میکنم. البته میتونید توی reddit کانفیگهای خفن تری رو ببینید ولی من با نیازهای خودم کانفیگ کردم و ازش راضیم.
neovim درواقع یه فورک از vim با قابلیت های بیشتری مثل استفاده از lua و async داره _و بیشتر از و_یم کامیونیتی محوره و این یعنی آپدیت های بیشتر و بهتر دریافت میکنه.
من اوایل هیچ علاقهای به vim نداشتم و میگفتم تا vscode و pycharm هست چرا از ویم استفاده کنم. اما وقتی که داشتم چالش ۹۰روز کد رو توی اینستاگرام انجام میدادم با خودم گفتم که بیام و از ویم برای نوشتن اسکریپتهای کوچیک ازشون استفاده کنم. به لطف کانفیگهایی لینوکسی و نصب آرچ فقط استفاده بیسیک ازش رو میدونستم یعنی اینکه واردش بشم یه تکست رو بنویسم و خارج بشم. ولی بعد از یکمی سرچ زدن توی گوگل و یوتوب فهمیدم که vim خیلی بیشتر از این حرفاست و مهم نیست که چقدر با vim کار کرده باشید و چقدر توش خفن باشید در نهایت یه چیز جدید ازش میفهمی که انگشت به دهنت میکنه.
چرا vim؟
سادست چون از شر موس خلاص میشید.
یکی از خصوصیات برنامهنویس خوب بودن گشاد بودنشه که همیشه دنبال سادهترین راه برای یه کاری میگرده. و خب وقتی میخواید موس رو تکون بدید باید دست رو حدود ۲۰ سانتیمتر تکون بدی و موس رو بگیری و تکون بدی و بعدش دوباره همون ۲۰ سانتیمتر رو برگردی کار خیلی سختیه. ولی وقتی دستت روی کیبرده دیگه این وقت تلف نمیشه و راحتتر هستید. البته کمی زمان میبره تا عضلاتتون یادبگیرن که چی به چیه(بعد از مدتی استفاده از vim واقعا استفاده از ادیتور های معمولی براتون سخت میشه).
چرای بعدی قابلیت شخصی سازی فوقعلادهی ویم هستش. شما برای هر استفادهای میتونید vim رو به لطف وجود vimscript که یه زبان برنامه نویسی برای شخصی سازی و ساختن پلاگین برای vimـه شخصی سازی کنید. سبک بودن یکی دیگه از ویژگی های vim هستش و برای کسایی که سخت افزار قویی ندادن انتخاب فوق علادهای هستش. البته من دیگه از قابلیت هایی که vim داره و نمیتونید توی ادیتورهای دیگه بهشون دسترسی داشته باشین مثل register ها و macro ها که ازشون رد میشیم.
نقطهی قوت عجیبش اینکه وقتی وارد ویم میشید نمیتونید تایپ کردن رو شروع کنید. باید اول i رو بزنید بعد شروع کنید علت اینکار وجود سه حالت کلی command mode که همونه که اول واردش میشید توش هستید. که کارهایی مختلفی میتونید داخل این مود انجام بدید مثل حذف و بالا و پایین رفتن و کلی کار دیگه. حالت بعدی insert mode هست که میتونید توش تایپ کنید و حالت بعدی visual mode هست که میتونید متن رو انتخاب کنید.
از کجا شروع کنم؟
از اونجایی که vim سال ۱۹۹۱ منتشر شد(البته خود vim نسخهی ارتقا یافتهی vi که یه ادیتور unix بوده) منابع زیادی برای استفاده وجود داره. بهترین نقطه شروع vimtutor که هم میتونید از سایتش استفاده کنید هم اگه vim رو نصب داشته باشید میتونید ازش توی ترمینال استفاده کنید. همچنین میتونید از بازی vim adventure استفاده کنید که اونم برای شروع بدک نیست.
اینا منابعی هستن که در طول زمان جمع آوری کردم (البته انگلیسین):
Online-version of the help page
و میتونید از ویدیو های یوتوب ThePrimeagen و TJ DeVries و البته VimConf استفاده کنید. اگه انگلیسیتون خوب نیست میتونید از دورهی ویم جادی استفاده کنید. شاید در آینده خودمم درمورد vim ویدیو ساختم.
همنطور که گفتم میتونید ویم رو شخصی سازی کنید میتونید از کانفیگ نئوویم من استفاده کنید.
صحبت پایانی
من کسی نیستم که بخوام پند برنامه نویسی بدم ولی برنامهنویس باید چیز های جدید رو تجربه کنه و ابزارهایی که میتونن بهروری رو بیشتر کنن رو استفاده کنن و vim یکی از این ابزار هاست. مطمئن باشید از وقتی که برای vim میزارید اصلا پیشمون نمیشید. و لازم نیست حتما برای کارهای اصلیتون ازش استفاده کنید، برای اسکریپتهای کوچیک ازش استفاده کنید. حتما لازم نیست بیایین و ادیتور تحت ترمینال ویم رو استفاده کنید!
پلاگین ویم برای همهی ادیتور های و IDE ها وجود داره میتونید نصب کنید و یه مدتی ازش استفاده کنید. اگر فهمیدید واقعا کارکردن باهاش رو دوست ندارید میتونید بدون هیچ دردسری پلاگینش رو غیر فعال کنید و از ادیتور معمولیتون استفاده کنید.
ولی اگه با vim دستتون راه افتاد و دارید از لینوکس استفاده میکنید، پیشنهاد میکنم حتما از Tilling WM ها مثل i3 استفاده کنید. چون بهرهوریتون خیلی بیشتر از قبل میشه و tmux رو هم فراموش نکنید که درمورد همهی این ابزارها در آینده بیشتر براتون میگم.
و در نهایت اینا ابزارن و فقط برای بیشتر کردن بهره وری و استفاده هستن. اگه وقتی ابزار بهتری بیاد(که فکر نمیکنم 🙂) از اونا استفاده میکنیم.