ایمکس (Emacs) و ویم (Vim) دو ویرایشگر متن محبوب و متن باز در سیستم های یونیکس و شبه یونیکس می باشند. طرفداران این دو ویرایشگر در طول تاریخ همواره بر سر برتری ویرایشگر محبوب خود بحث و جدل داشته اند. در حالیکه بسیاری از ویژگی ها و عملکردهای این دو ویرایشگر در پلاگین ها، اسکریپت نویسی ها و کلیدهای میانبر یکسان است ولی روش کار آنها تا حدودی با هم متفاوت است. با فیسیت همراه باشید تا پس از معرفی مختصر این دو ویرایشگر، مقایسه ای نیز بین آنها داشته باشیم.
ایمکس (Emacs)
ایمکس یک ویرایشگر متنی محبوب است که عمدتا توسط کاربران، برنامه نویسان و مهندسین سیستم های شبه یونیکس و مدیران سیستم استفاده می شود. مانند دیگر ویرایشگرهای متنی، ایمکس نیز دستورات تایپی و کلیدهای اصلی دارد که می توان کلمه ها و خطوط را حذف یا اضافه کرد. ایمکس با استفاده از زبان برنامه نویسی لیسپ نوشته شده و کاربرانی که قصد توسعه یا شخصی سازی آن را دارند، نیز از همان زبان استفاده می کنند.
ایمکس اولین بار توسط ریچارد استالمن در دانشگاه MIT ایجاد شد. نسخه محبوبی از این ویرایشگر گنو ایمکس نامیده می شود. نسخه هایی از ایمکس، نیز برای استفاده بر روی ویندوز توسعه داده شده است.
ویم (Vim)
برام مولینار در سال ۱۹۸۸ شروع به کار بر روی ویرایشگر ویم، برای کامپیوترهای آمیگا کرد. مولینار این ویرایشگر را اولین بار بار در سال ۱۹۹۱ منتشر کرد. این ویراشگر مبتنی بر ویرایشگر اولیه به نام Stevie بود که توسط تیم تامپسون و دو همکارش ابداع شده بود. نام Vim برگرفته از Vi Improved است زیرا ویم، یک نسخه گسترش یافته از ویرایشگر vi با بسیاری از ویژگی های جدید دیگر است.
ویم یک پروژه نرم افزاری متن باز است که در سال ۲۰۰۶، به عنوان پر طرفدارترین ویرایشگر متن توسط خوانندگان لینوکس ژورنال رای داده شد.
ویم بهتر است یا ایمکس؟
جنگ بین ویرایشگرها یا Editor War همواره وجود داشته است ولی چه تفاوت هایی بین این دو ویرایشگر وجود دارد که این چنین مورد بحث و جدل قرار می گیرد؟
واسط کاربری
ویم از محیط های ویرایشی ساخته شده است که رایج ترین آنها محیط Command و محیط insert می باشد. ویم در تلاش است تا تعداد کلیدهایی که کاربر باید فشار دهد، کاهش دهد زیرا ویرایشگر vi که ویم هم بر اساس آن ساخته شده است، برای استفاده در ترمینال هایی با سرعت کند طراحی شده بود.
ایمکس از کلیدهای ترکیبی برای فعال سازی میانبرها استفاده می کند که اغلب باید چندین کلید را همزمان با هم فشار داد، تا عملی صورت گیرد. این جنبه از ایمکس اغلب مورد انتقاد قرار می گیرد.
سهولت یادگیری
یادگیری ایمکس به دلیل واسط کاربری طبیعی تری که دارد، بخصوص برای کاربرانی که با ویرایشگر های متنی مبتنی بر GUI آشنایی دارند، آسان تر است، ولی ویم محیط های ویرایشی متفاوتی دارد که برای افرادی که برای اولین می خواهند شروع به یادگیری کنند، کمی مشکل است.
سرعت ویرایش
علاقمندان ویم معتقدند کاربران بعد از آشنایی با محیط های ویرایشی این ویرایشگر و دستورات ویم، کارآیی و بهره وری بیشتری را در این ویرایشگر خواهند داشت. ویرایش فایل با ویم بسیار سریعتر از ایمکس است زیرا یکی از اهداف تولید ویرایشگر ویم، داشتن سرعت بالا بوده است. برای مثال، حرکت نشانگر در ویم می تواند از طریق کلیدهای H، J، K و L در محیط عادی کنترل شود. در این حالت نیازی نیست که دست کاربر صفحه کلید را رها کند که موجب افزایش سرعت می شود ولی در کنار آن، زمانی هم صرف تغییر از حالت ویرایشی به حالت حرکتی خواهد شد. در ایمکس، نشانگر می تواند با میانبرهای Ctrl-B و Ctrl-F حرکت کند که به دلیل استفاده از دو کلید سرعت کاربر را پایین خواهد آورد.
استفاده از منابع
ویم از ایمکس سبکتر است و فضای حافظه کمتری را اشغال می کند. طرفداران ویم معمولا به این مصرف منابع ایمکس ایراد می گیرند و Emacs را برگرفته از پنج کلمه “Eighty Megabytes And Constantly Swapping” می دانند که به حافظه قابل توجهی برمی گردد که به طور معمول ایمکس از آن استفاده می کند.
البته با کلاینت گنو، یک فرآیند ثابت ایمکس می تواند به گونه ای اجرا شود که از چندین کلاینت به صورت همزمان پشتیبانی کند. این کار سبب می شود تا سرعت بالا رود و مصرف حافظه نیز کاهش یابد، که در این صورت تا حدودی ایمکس به ویم نزدیک می شود.
توسعه پذیری و سفارشی سازی
اگرچه هر دو ویرایشگر ویم و ایمکس از پلاگین های بسیاری برای افزایش کارکردهای خود استفاده می کنند ولی با ایمکس خیلی بیشتر می توان محیط ویرایشگر را سفارشی سازی کرد. این یکی از مهمترین ویژگی های قابل بحث بین این دو ویرایشگر است.
ایمکس در elisp یا Emacs Lisp توسعه داده می شود ولی ویم زبان اسکریپتی مخصوص به خود را دارد و از دیگر زبان های برنامه نویسی برای توسعه پلاگین، پشتیبانی می کند. ایمکس با تعریف دوباره توابع داخلی elisp، بصورت مداوم در حال توسعه است. گروهی از تغییرات مرتبط با هم، حالت ها یا mode نامیده می شوند و به آسانی برای استفاده اتوماتیک در انواع مختلف فایل ها، پیکربندی می شوند. تعریف این حالت ها برای زبان های برنامه نویسی مختلف بسیار راحت است، بنابراین می توان به سادگی برای زبان برنامه نویسی یا فریم ورک های مختلف، حالت هایی را تعریف کرد مثلا lisp mode یا Ruby mode. در این محیط ها می توان به صورت مستقیم عملکردهای اصلی ایمکس را هم تغییر داد مثلا به صورت اتوماتیک فرمت یا رنگ متن را تغییر داد و یا الگوهای استانداردی اضافه کرد. بنابراین می توان گفت که ایمکس برای برنامه نویسان بسیار قابل انعطاف تر از ویرایشگر ویم است ولی بسیاری هم مخالف این نظرند. ویم نیز می تواند با استفاده از محیط دستوری خود، توسعه یابد. در محیط دستوری می توان تنظیماتی را انجام داد، توابعی را تعریف کرد و ماکروهایی ساخت. در واقع فایل های پیکربندی ویم، تنها، دستوراتی هستند که می توانند از طریق محیط دستوری، وارد شوند.
واسط کاربری گرافیکی
هر دو ویرایشگر ویم و ایمکس، رابط کاربری گرافیکی دارند. ایمکس از XDisplay یا gtk2 برای واسط کاربری خود استفاده می کند ولی ویم می تواند از واسط های کاربری بسیاری نظیر gtk، گنوم، گنوم ۲، موتیف، آتنا، neXtaw و نیز gtk2 بهره می برد.
منبع : فیس ایت