انگیزهای که باعث میشه با سختترین چگونهها هم روبرو بشیم «چرایی؟»ست که میپرسیم و پاسخی که برایش داریم. یادگیری vim هم مستثنی نیست. ولی قبل از اون ببینیم ویم چی هست.
ویم یک ویرایشگر متنی ترمینال (command line text editor) است. یعنی اگر ویرایشگرهای دیگهای مثل sublime, atom یا vscode رابطکاربری زیبا و شکیل خودشون رو دارن که میشه با موس خیلی از اینتراکشها رو انجام داد، ویم تو محیط ترمیناله و با اینترفیس ساده که از استفاده از موس هم بینیازتون میکنه که در ادامه میبینیم این چه مزیتی میتونه داشته باشه.
چرا vim یاد بگیریم؟
ویم بصورت پیشفرض روی سیستمعاملهای یونیکسی نصبه. مثلاً اگر شما یکی از توزیعهای لینوکس مثل ابونتو رو نصب داشته باشین، ویم هم همراهش هست.
هرچند که منحنی یادگیری ویم زیاد جذاب نیست، ولی منحنی پرفرمنس شما بعنوان کسی که ازش استفاده میکنه جذابه، درواقع کسانی که ویم رو یاد میگیرن، بخاطر ابتدای نمودار نیست که پرفورمنس بدی دارند و حتی برای خروج از ویم هم باید گوگل کنن، بلکه بخاطر انتهای نمودار هست که بخاطر shortcutها و بینیازی کامل به موس بیشتر از بقیهی ویرایشگرها مؤثر و سریعست. و بعنوان کسی که کمی آبسس تمرکز هست، ویم باعث میشه که بیشتر روی کدها و فایلها تمرکز کنی.
و خب لایت و سبک بودن ویم هم مسئلهی مهمیه، اینکه روی هر دیوایس کوچیکی که بش (bash) داشته باشه بتونید یک تکستادیتور حرفهای داشته باشید مزیت مهمیه. هرچند روی لپتابتون سبک بودن زیاد مهم نیست ولی خب میشه روی هر سیستمی ویم رو کانفیگ کرد و اپ اندروید زد. البته واسه بیلد گرفتنش دیگه احتمالاً چارهای جز صبر زیاد ندارید.
اگر سیستمادمین باشید یا بخواید سرور خودتون رو کانفیگ کنید و یا اینکه به هردلیلی به یک سرور لینوکسی، رزبری یا سیستم خودتون ssh بزنید، بهترین text editorی که میتونید داشته باشید ویم هست.
هرچند ویرایشگرهای دیگری هم هستن که میشه در محیط ترمینال باهاشون کار کرد، مثلاً nano، ولی خب به هیچ عنوان قابل مقایسه با ویم نیست، زیاد کانفیگپذیر و قابل کاستوم کردن نیست، به اندازهی ویم تم و پلاگین نداره و کامیونیتی گستردهای هم نداره. ولی اگر نمیخواید ویم یاد بگیرید ولی همچنان به یک ادیتور تو ترمینال نیاز دارید، nano گزینهی خوبیه.
و در نهایت مهمترین دلیل برای یادگیری ویم فان و لذتبخش بودنش هست. مهارتی که به پرفورمنس مطلوب رسیدنش نیاز به زمان بیشتری داره و شاید جذاب باشه که بتونیم بخش زیادی از کارهامون رو به ترمینال منتقل کنیم. و خب یادگیری یک مهارت نسبتاً سخت باعث بهبود عملکر مغز و افزایش اعتماد به نفس و … هم خواهد شد.
چگونه ویم یاد بگیریم؟
اگر هیچ آشنایی قبلی ندارید، بدونید که شباهت نمودار یادگیری ویم به دیوار، معروف است. اونقدر سخت که یک سؤال معروف توی stackoverflow وجود داره با عنوان چجوری از ویم خارج بشیمکه تا الان حدود ۱٫۵ میلیون بازدید داشته. بله، یک و نیم میلیون نفر!!!
خب قطعاً قرار نیست اینجا cheatsheetهای ویم رو کپی کنم یا کورس ویم داشته باشم! چون اینا رو میشه با گوگل هم پیدا کرد. بلکه معرفی روشیست که در نهایت منجر شد که خودم بتونم بطور کامل از ویم بعنوان ادیتور اصلی استفاده کنم.
اول از همه سعی کنید بشکل منظم و رزانه از نسخهی پیشفرض ویم استفاده کنید، ادیت یک فایل کوچیک یا تغییر یک کانفیک تو سرور رو با ویم انجام بدید، هرچند زمانبر خواهد بود، ولی اگر ملزم بشیم به اینکه یکسری تسک رو فقط با ویم انجام بدیم خیلی زود از مرحلهی wtf یادگیری عبور میکنیم.
بعد از این سعی کنید حداقل کانفیگ رو برای ویم انجام بدید تا از این حالت اولیه در بیاد و حتی برای جذابتر شدن و اینکه انگیزه پیدا کنید میتونید از یک تم خوشرنگ هم استفاده کنید. و بنظرم آپشن خوبیه اگر nerdTree رو هم تو همین مرحله نصب کنید تا بتونید بشکل کامل از ویم استفاده کنید. درواقع اینجا خوبه که بخش از کار رو کاملاً با ویم انجام بدید. مثلاً من تو این مرحله ساید پروجکتی رو که شبها روش کار میکردم رو کاملاً با ویم کد میزدم.
حالا میتونید یک کانفیگ ساده واسه ویم داشته باشید. مثلا کانفیگ من اینه، البته کمی شخصی و سلیقهایست، و بسته به اینکه تو هر زمانی چه استفادهای از ویم میکنم ممکنه تغییر کنه!
از اینجا به بعد باید سعی کنید بجای حفظ دستورات ویم، دستورات جدید روخودتون تولید کنید، درواقع میشه به دستورات ویم مثل یک زبان نگاه کرد که از افعال و اسامی تشکیل شده. ویدیوی Mastering the Vim language رو توصیه میکنم که کامل این مسئله رو توضیح میده. مثال کوچیکش میشه این:
– افعال: d) delete و c) change افعالمون هستند
– اسامی یا موصوفها: w)word
پس: میتونیم با dw یک کلمه رو پاک کنیم
فقط با یادگیری حدود ۲۰-۳۰ دستور، و با ترکیبکردنشون حدود ۲۰-۳۰ هزارتا دستور رو میتونید اجرا کنید. و این نکتهی شگفتانگیزه Vim هست.
و بعد از این مرحله به جایی میرسیم که میتونیم کل کار روزانهمون رو با ویم انجام بدیم و خودمون رو ملزم کنیم که از ادیتور دیگری استفاده نکنیم.
حالا مستقل از عنوان پست، کل این پروسه ممکنه از چند روز تا چند هفته طول بکشه. درست یادم نمیاد، ولی فکر کنم برای من حدود یک ماه طول کشید.
اگه گوگل کنید cheatsheetهای زیادی واسه ویم وجود داره، ولی دنبال کردن وبلاگ jovicailic رو توصیه میکنم. و اینکه نویسندهی همین وبلاگ یک کتاب هم نوشته در مورد ویم که من فقط چند قسمتش رو خوندم و اگر واقعاً به master vim !!! شدن فکر میکنید خوندنش مفید خواهد بود.
سلام 🙂
من خودم از atom استفاده میکنم ولی این پست رو بوکمارک کردم که وقتی سرم خلوت تر شد بهش سر بزنم و برم سراغش
مرسی همین 🙂