چرا از vim استفاده می‌کنم؟

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