چرا vim؟

سلام.

اگه الان دارید اینو میخونید به این معنیه که در مورد vim کنجکاو هستید و اصل سوالتون هم اینه که آیا استفاده ازش میتونه محیط develop شما رو سریع تر و دوست داشتنی تر کنه یا نه؟ (درست حدس زدم؟)

بزارید حرف آخر رو اول بزنم:

اره میتونه.


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

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

  1. ویم یه Text editor هست. که به key-binding های خیلی جذابش معروفه و سرعت ادیت کردن کد رو بالا میبره.
  2. شما مجبور نیستید خودش رو نصب کنید و از فردا از اون به جای ادیتور اصلیتون از اون استفاده کنید و میتونید پلاگین vim رو روی ادیتور یا IDE محبوب خودتون نصب کنید و از بیشتر امکاناتش روی محیط develop فعلی خودتون بهره ببرید که اکثر چیزای باحالش رو شامل میشه.(پس نترسید)
  3. شما اگه بخواید هم نمیتونید خودش رو نصب کنید و از فردا به عنوان ادیتور اصلیتون استفاده کنید(پس بترسید😂). چون یادگیریش یکم اولاش سخته و کار شما رو کند میکنه. بخوام علمی تر بگم منحنی یادگیری ویم این شکلیه:
منهنی بهره‌وری/زمان
منهنی بهره‌وری/زمان


همونطور که میبینید بعد از مدتی کار کردن باهاش (بعد از اینکه یاد گرفتید چی به چیه) خییییلی بازدهی رو بالا میبره و هر روز با ترکیب کردن کارای قبلی که بلد بودید میتونید کارای جدید بکنید. ولی قبلش مثل یه جهنم میمونه که برای خارج شدن از باید گوگل کنید.😂

۴. خود ادیتور ویم برای اجرا شدن نیاز به محیط گرافیکی نداره. و این جدای از سریع و سبک بودن موقعی کاربرد داره که مثلا شما ssh میکنید به یه سرور بعد میخواید یه فایل رو ادیت کنید و خوب قاعدتا اونجا دیگه خبری از vs code و این رفقای نیمه راه نیست و این vim هه که تا آخرش پاتون وامیسه.

۵. ویم قابلیت شخصی سازی خیلی زیادی داره و شما با توجه به سلیقه ی خودتون و مدل فکریتون میتونید تنظیمش کنید که دقیقا بشه اون چیزی که شما میخواید.

قرار بود با سه تا نکته شرو کنم.


شمشیر دو لبه ی عادت به ویم

عادت کردن به ویم یه مزیت و یه عیب داره:

مزیت:

دریچه ی بهشت همه جاست
دریچه ی بهشت همه جاست

بزارید یه مثال بزنم: مثلا توی vs code و android studio برای انجام یه کار واحد (مثلا reformat کردن) دو تا short key متفاوت وجود داره. حالا اگه شما دارید دوتا پروژه رو موازی روی این دو تا ادیتور پیش میبرید و هی بین این ها سوییچ میکنید اذیت میشید چون باید هی دقت کنید که الان توی کدوم هستید و باید با کدوم short key اون کار واحد رو انجام بدید. ولی خوب اگه plugin ویم رو روی همه جا نصب کنید دیگه اون کار واحد یه راه مشخص داره که همه جا کار میکنه و در واقع حافظه ی عضلات شما راحت اون کار رو به خاطر میسپاره و ناخوداگاه خیلی سریع اون کارو انجام میدید.


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

و

خوب کامند ها اجرا نمیشن و نوشته میشن توی صفحه🙃.

و اونجاست که حافظه ی عضلات شما که با دقت تربیت شده بودن به جنگ با شما میان به غیر از اینکه میخواید سرتون رو به نزدیکترین دیوار بکوبین ممکنه جلوی دوستتون/همکارتون هم ضایع بشین و این نمکی رو زخم شما خواهد بود.

ولی ولی ولی.

اوج لذت اینه که دوست/همکار شما هم ویم داشته باشه.

دوستانی بهتر از آب روان
دوستانی بهتر از آب روان


تکون نخور!

توی ویم کللللی میانبر برای جا به جا شدن (بالا پایین و جلو عقب) رفتن توی کد وجود داره و این باعث میشه که یوزر های ویم از موس استفاده نکنن و این خودش خیلی کمک میکنه. چون شما برای استفاده از موس (یا حتی تاچ پد) باید مچ دستتون رو حرکت بدید و این سرعت شما توی تایپ کردن رو پایین میاره.

حتی vim برای بالا پایین رفتن ساده (مثل arrow key ها) هم چهار تا دکمه جدا داره که شما زحمت نکشید دستتون رو تا arrow key ها پایین بیارید:

(البته arrow key ها هم برای بالا پایین رفتن میتونید استفاده کنید).

البته دلیل اصلی این موضوع اینه که کامپیوتر های خیلی قدیمی arrow key نداشتن و برنامه نویس هایی که ویم رو نوشتن چاره ای جز استفاده از hjkl نداشتن.

ولی خوب با گذشت زمان و اضافه شدن دکمه های arrow key هنوز یوزر های vim ترجیح میدن از hjkl استفاده کنن (به همون دلیلی که بالاتر گفتم)

جالبه بدونید توی اصول تایپ ده انگشتی arrow key ها جایی ندارن

یذره از بحث اصلی دور شدیم ولی چون بامزه بود اشکال نداره😀.

آیا خود ادیتور vim هم قابل استفاده اس؟

بله. البته پیشنهاد من اینه که اول با پلاگین هاش شروع کنید که یهو محیط توسعه تون تغییر کلی نکنه. بعد که دیدید همه چی خوبه بیاید روی ویم.

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

مثلا همین vs code که به عنوان یه ادیتور سبک ازش یاد میشه رو با الکترون نوشتن و این یعنی وقتی شما بازش میکنید عملا یه گوگل کروم کامل به همراه موتور رندر html و مفسر javascript و کلی خرت و پرت دیگه باید بیان بالا که تازه اینا برن سراغ خود کد های vs code و اونا رو اجرا کنن و بعد شما تازه میتونید کارتون رو شروع کنید. درصورتی که vim یه باینریه که خیلی سریع اجرا منابع الکی هدر نمیده و کارشو میکنه میره.

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


ویم چقدر باهوشه؟

ویم هوشمند نیست که بخواد autocompelete بده ولی سیستم های autocompelete معروف مثل tabenine و kite برای ویم پلاگین دارن و این قابلیت autocompelete رو به بهترین شکل ممکن با کمک الگوریتم های هوش مصنوعی در اختیار شما میزارن از طرفی قابلیت LSP به ورژن جدید neovim اضافه شده که عملا یعنی توی ویم میشه راحت به همه ی زبون های برنامه نویسی کد نوشت و از به روز ترین قابلیت های این مدلی بهره برد.

اگه دوست داشتید میتونم یه پست دیگه در ادامه ی این پست بنویسم و در مورد ورژن های مختلف ویم و LSP صحبت کنم.


از کجا یاد بگیریم؟

یادگیری ویم اصلا اینطوری نیست که بگید خوب یه مدت باهاش ور میرم دستم میاد چی به چیه.

نههه.

حتما برای یادگیری ویم یه رفرنس داشته باشید و کم کم ازش یاد بگیرید.

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


حرف آخر

اگه Vim آدم بود از اونایی بود که روز اول آشنایی بهتون فش میده و سنگ پرت میکنه و صمیمی شدن باهاش خیلی طول میکشه ولی اگه باهاش دوست بشید خیلی کمکتون میکنه و از جون مایه میزاره که شما موفق بشید. همیشه مطمئن میشه که حالتون خوبه و در راحت ترین شرایط هستید.

دقیقا برعکس شادمهر:

همیشه اولش خوبه , همیشه آخرش سخته

همونطور که دیدید این قسمت اصلا آموزش ویم نبود. بیشتر حالت معرفی بود. پست آموزشی در مورد vim گذاشتن شاید یکم کار بیهوده ای باشه. چون کلی آدم قبلا این کارو کردن و سواد من هم اونقدری نیست که بخوام به بقیه هم یاد بدمش. سعی کردم یه آشنایی ایجاد کنم. و الان این شما هستید که تصمیم میگیرد:


قرص آبی: این تب مرورگر رو میبندی و دیگه یادت نمیاد چی خوندی.

قرص قرمز: آلیس با من بیا که بهت نشون بدم این سرزمین عجایب (ویم) تا کجا پیش میره.

مرسی از اینکه تا اینجای این پست رو خوندید.

حتی اینم خوندید.

پایدار باشید.

:wq