مدت زیادی من توی ویم کد میزدم، سعی میکردم اون روی برای هر پروژه سازگار کنم و تقریبا تمام کدنویسی من توی ویم بود، و میتونم بگم اولین باری که به جای ویم مجبورم کردن از pycharm استفاده کنم خیلی فشار زیادی بهم اومد و اصلا دوست نداشتم این کار رو انجام بدم. با خودم میگفتم من یه کاربر ویم با این همه امکانات و قدرت زیاد چطور از یک برنامه به درد نخوری مثل pycharm استفاده کنم؟
بعد از اون، اصرار من به استفاده از ویم کم شد و کم کم به ادیتورهای معمولتری سویچ کردم، مدتی قبل با خودم گفتم که مجددا از ویم استفاده کنم و سعیم رو کردم که مجددا به این ادیتور برگردم ولی خب، این کار امکان پذیر نبود. مشکل خیلی ساده بود، ویم دیگه به درد برنامه نویسی نمیخوره! ولی چرا؟
قبل این که ادامه بدم لازمه بگم این مطلب میتونه برای emacs هم صادق باشه
# تنظیمات اصلی ویم به درد نخوره
میشه گفت تنظیمات و گزینههایی که ویم در اختیار کاربر میده به شدت زیاده، تنظیمات به زبان viml نوشته میشه که یک زبان برنامه نویسی کوچیکه، یعنی به عنوان کاربر دست شما به شکل باور نکردنی بازه.
ولی مشکل چیه؟ تنظمیات اصلی ویم برای برنامه نویسی خیلی به درد بخور نیست، باید ساعتها و روزها وقت بگذارید که ویم را تنظیم کنید، پلاگینها رو نصب کنید، راهنماهای پلاگینها رو یکی یکی بخونید و دوباره اونها رو تنظیم کنید تا در نهایت به اون چیزی که میخواید برسید. چیزی که توی یک ادیتور جدیدتر در کمتر از نیم ساعت و نصب چهار پنچ تا پلاگین بهش میرسید
به طور مثال حداقل انتظار من از یک ادیتور اینه که یک فایل اکسپلورر درست حسابی در اختیار من بگذاره، چیزی که به صورت داخلی ویم بهتون میده اصلا منو راضی نمیکنه برای همین باید پلاگین nerdtree رو نصب کنی ولی اون پلاگین هم واقعا چیزی جالبی نیست
# یادگیری ویم زمانبر هست
امکاناتی که ویم در اختیارتون قراره میده خیلی زیاده، ولی مشکل اینه که یادگیری ویم از شما زمان خواهد گرفت، وقتی یکی ادیتور جدید نصب میکنید همون لحظه اول بدون خوندن هیچ راهنمایی میتونید باهاش کار کنید، ولی در ویم این خبرها نیست، باید کمی بیشتر وقت بگذارید
# ویم رابط کاربری جذابی نداره
منظورم خود ویم هست. (چند برنامه گرافیکی که ویم رو به صورت embed اجرا میکنن هست ولی در مورد اونها حرفی ندارم)
عکس زیر یک نمونه هست، ممکنه در لحظه اول جالب باشه ولی در مقابل ادیتورهای جدیدتر واقعا حرفی برای گفتن نداره. اون تنوع پاپ آپها و گزینهها و آپشنها و منوها اینجا وجود نداره و خب همینه که هست، برنامه تو محیط ترمینال اجرا میشه و توانش در همین حده
شاید یک جای دیگه شما میخواید یک تنظیمی رو توی ادیتور محبوبتون عوض کنید، خیلی ساده، تنظمیات رو باز میکنید و یک تیک رو فعال یا غیرفعال میکنید، توی ویم این خبرها نیست، دوست دارید شماره خطوط کد رو ویم بهتون نشون بده؟ باید گوگل کنید یا راهنمای ویم رو بخونید تا بفهمید برای این کار لازمه این خط به فایل تنظیماتتون اضافه بشه
set number
یا مثلا اگه توی ادیتورهای جدیدتر دستور یا فرمانی رو یادتون رفته باشه میتونید توی منوهای برنامه نگاه کنید و حتی شورتکات اون رو جلوی منو ببینید و یاد بگیرید. ولی توی ویم کلی فرمان به درد بخور وجود داره که اگه فراموش کنید راهی جز گوگل کردن یا خوندن راهنمای ویم ندارید
# بگذار کارم رو بکنم!
این موضوع توی قبلیها هم اشاره شد ولی باز هم میخوام در موردش صحبت کنم، یادگیری ویم زمان میبره، وقتی کار با ویم رو یاد گرفتید و تنظیمش کردید خیلی خوب و سریع و عالی کار میکنه ولی تا وقتی که به اون درجه نرسیدید ویم مانع انجام کار شماست، این که خود ادیتور بخواد بخش خوبی از وقت شما رو بگیره خیلی جالب نیست، من میخوام کدم رو بزنم چرا برای یک فایل اسکپلورر کوفتی باید این همه درگیر نصب پلاگین و کانفیگ و یادگرفتن دستورات بشم؟
## خب حالا چی؟
هیچی! اگه از ویم برای برنامه نویسی استفاده میکنید good for you. اگر هم استفاده نمیکنید بدونید این این ادیتور واقعا به اون جذابی که کاربراش میگن نیست!
امکانات و گزینهها و فرمانهایی که ویم به شما میده با بقیه ادیتورها اصلا قابل مقایسه نیست، ولی برای خیلی از ما این همه امکانات هیچ کاربردی نداره، به کد نویسیهای اخیر خودم که فکر میکنم امکانات اصلی ادیتور که من ازشون استفاده میکنم امکان سینتکس هایلایت، فایل منیجر و یک ترمینال داخلی هست که تقریبا توی هر ادیتور جدیدی پیدا میشه. حالا اگه ادیتورم بتونه یا نتونه با regex توی فایل سرچ کنه اهمیتش واقعا برام صفر هست.
پینوشت: با وجود این حرفها پیشنهاد میکنم حتما در حد basic ویم رو یاد بگیرید، اگه با سرورهای لینوکس سر و کله میزنید برای ویرایش فایلها روی سرور همچنان یکی از بهترین گزینههای شما ویم هست. همچنین برای خیلی کارهای دم دستی میتونه گزینه بدی نباشه.
اگه دوست داشتید میتونید تو ترمینال دستور زیر رو بزنید تا کمی با این ادیتور آشنا بشید :-)
vimtutor