ایمکس

از ویکی‌پدیا، دانشنامهٔ آزاد
پرش به: ناوبری، جستجو
ایمکس
Emacs23.png
GNU Emacs 23.1.1.png
گنو ایمکس ۲۳٫۱٫۱
نویسنده(های) اصلی ریچارد استالمن
توسعه‌دهنده(ها) پروژه گنو
انتشار اولیه ۱۹۷۶
انتشار پایدار ۲۴٫۳ / ۱۱ مارس ۲۰۱۳؛ ۴۰۳ روز پیش
نوشته شده به سی، ایمکس لیسپ
سیستم‌عامل چندسکویی
زبان‌های در دسترس انگلیسی
گونه ویرایشگر متن
پروانه جی‌پی‌ال نسخهٔ ۳ به بالا
وب‌گاه www.gnu.org/software/emacs

ایمکس (به انگلیسی: Emacs) نام دسته‌ای از ویرایشگرهای متن با قابلیتهای گسترش‌پذیری بالاست. ایمکس نزد برنامه‌نویسان رایانه خصوصاً لینوکس/یونیکسکاران سخت محبوبیت دارد. در واقع ویرایشگر وی‌آی (vi) و ایمکس دو رقیب اصلی در عرصهٔ ویرایش متن در دنیای لینوکس/یونیکس محسوب می‌شوند.

نام ایمکس از عبارت انگلیسی Editor MAcroS (به معنی ماکروهای ویرایشگر) برای ویرایشگر تیکو برگرفته شده‌است. این ماکروها نخستین بار توسط ریچارد استالمن نوشته و توسط گای استیل، دیْو مون، ریچارد گرینْبْلَت و چارلز فرنکْسْتون و دیگران به هم چفت‌وبند شد. نسخه‌های گوناگونی از ایمکس در طول سالیان به وجود آمده‌اند اما امروز از دو گونهٔ اصلی آن استفاده می‌شود: گنو ایمکس و ایکس‌ایمکس که در واقع شاخه‌ای جداشده از گنو ایمکس است. ایکس‌ایمکس ۱۹۹۱ میلادی رشد مستقل خود را آغاز کرد. با این حال تا به امروز تا حد بسیار زیادی با گنو ایمکس همخوانی دارد. پروژهٔ گنو ایمکس توسط استالمن در سپتامبر ۱۹۸۴ آغاز به کار کرد و نخستین انتشار عمومی آن در تاریخ ۲۰ مارس ۱۹۸۵ (۲۹ اسفند ۱۳۶۳) صورت گرفت[۱]. تا سال ۲۰۰۸ وظیفهٔ نگهداری از کد گنو ایمکس به عهدهٔ استالمن بود و پس از آن به Stefan Monnier و Chong Yidong داده شد. زبانی که برای گسترش امکانات ایمکس از آن استفاده می‌شود گویشی خاصی از زبان برنامه‌نویسی لیسْپ به نام لیسپ ایمکس است.

ایمکس یکی از قوی‌ترین ویرایشگرهای متن در حال حاضر است. باید توجه داشت که ایمکس برای ویرایش متن است و نه واژه‌پردازی. از این رو هدف اصلی آن کنترل اندازه یا نوع قلم و امثال آن نیست، بلکه دستکاری در کلمات و بندها (شامل جابجایی و پس‌وپیش کردن و پاک‌کردن و...) و رنگ‌آمیزی متن برای آسان‌سازی ویرایش برنامه‌های رایانه‌ای و امثال آن است. از طریق ایمکس می‌توان برنامه‌های رایانه‌ای را نوشته، اجرا و حتی غلط‌گیری (debug) کرد. اصولاً می‌توان ایمکس را برای کار با هر زبان برنامه‌نویسی دلخواهی بهینه‌سازی و تنظیم کرد. و تمام این گسترشها از طریق زبان ایمکس لیسپ است.

چنان که گفته شد به ایمکس قابلیتهای بیشماری به کمک زبان برنامه‌نویسی ایمکس لیسپ می‌توان افزود. این امکانات‌افزایی تا جایی پیش رفته‌است که امروز بسیاری از ایمکس‌کاران حرفه‌ای بسیاری از کارهای روزمرهٔ خود را حتی وب‌گردی (به صورت متنی) و نوشتن و دریافت پست‌الکترونیکی و کارهای بسیاری که از یک ویرایشگر عادی بر نمی‌آید، با ایمکس انجام می‌دهند.

دستورات ایمکس به صورت ترکیبی از فشردن کلیدهای کنترلی و کلیدها (و احیاناً سپس تایپ دستور) است. هنگام ذکر این دستورها در راهنماها، فشردن هم‌زمان کلید کنترل با کلیدی دیگر (مثلاً x) را به صورت C-x نمایش میدهند که در آن حرف C بزرگ نماینده‌ی کلید کنترل است. مثلاً برای بازکردن یک پرونده در ایمکس از دستور C-x C-f استفاده می‌شود که به معنای فشردن هم‌زمان Ctrl و x و سپس فشردن هم‌زمان Ctrl و f است. همچنین فشردن کلید مِتا را با حرف M بزرگ نمایش میدهند.به عنوان مثال M-x*[۱] یعنی فشردن هم‌زمان کلید متا و حرف x و یا C-M-Delete به معنای فشردن هم‌زمان کلید کنترل و کلید تبدیل و کلید حذف است. همچنین کلید تبدیل را با حرف S بزرگ نمایش میدهند.به عنوان مثال برای کات کردن تمامِ یک خط از C-S-Backspace استفاده میشود که به معنای فشردن هم‌زمان کلید کنترل و کلید تبدیل و کلید پس‌بر است.

سازمان و اجزای صفحه نمایش در ایمکس[ویرایش]

در محیطهای گرافیکی، ایمکس یک پنجره گرافیکی را اشغال می‌کند. در محیطهای متنی ایمکس تمامی صفحه ترمینال را اشغال می‌کند. در هر دو صورت، پنجره گرافیکی یا ترمی‌نالی که توسط ایمکس اشغال شده‌است را قاب یا فریم (frame) می‌گویند. یک قاب از نواحی مختلفی تشکیل شده‌است. در بالاترین قسمت قاب نوار منو وجود دارد و در محیطهای گرافیکی درست زیر نوار منو، نوار ابزار وجود دارد. در قسمت پایین و انتهای قاب ناحیه پژواک یا انعکاس (echo area) قرار دارد که پیامهای آگاهی دهندهٔ کوتاه در این ناحیه نمایش داده می‌شود و همچنین زمانیکه ایمکس اطلاعاتی را از شما درخواست می‌کند در این مکان وارد می‌کنید. مهمترین ناحیه‌ی قاب که زیر نوار ابزار (اگر وجود داشته باشد) است و بالای ناحیه اِکو قرار گرفته، پنجره (window) نام دارد. توجه کنید که در اغلب میزکارها لغت پنجره معنا و مفهوم دیگری دارد. پنجره در میزکارها، معادل قاب یا پنجره گرافیکی در ایمکس است. یک پنجره مکانی است که بافر (buffer) یا میانگیر (بافر متنی است که درحال ویرایش آن هستید) در آن نمایش داده می‌شود. در حالت عادی وقتی ایمکس شروع به کار می‌کند تنها یک پنجره در قاب وجود دارد اما شما می‌توانید فضای این پنجره را با یک یا چند پنجره دیگر شریک کنید و هر کدام از این پنجره‌ها می‌تواند بافرِ جداگانه‌ای را نمایش دهد. در هر زمان تنها یک پنجره می‌تواند به عنوان پنجره‌ی انتخاب شده باشد که به آن پنجره‌ی فعال می‌گویند. اگر در محیط گرافیکی باشیم، مکان‌نمای پنجره‌ی فعال بصورت چشمک زن و به صورت واضح‌تری ظاهر می‌شود که به آن مکان‌نمای فعال(active cursor) می‌گویند و مکان‌نمای پنجره یا پنجره‌های غیر فعال به صورت یک جعبه‌ی توخالی نمایش داده می‌شود. اگر در محیط متنی باشیم تنها یک مکان‌نما و آنهم در پنجره فعال ظاهر می‌شود. بافرِ پنجره فعال را بافر کنونی (current buffer) می‌گویند.[۲]

پوینت:
مکان‌نما در پنجره فعال مکانی را نشان می‌دهد که اکثر فرمانهای ویرایشی در آن محل اعمال می‌شوند. به این مکان پوینت (point) گفته می‌شود. در پنجره فعال به طور پیشفرض مکان‌نما به صورت یک بلوک پررنگ بر روی یک نویسه یا کاراکتر، نمایش داده می‌شود اما شما پوینت را بین دو نویسه در نظر بگیرید به این صورت که پوینت قبل از مکان‌نما واقع شده‌است. به عنوان مثال اگر متن شما "frob" باشد و مکان‌نما روی نویسه "b" باشد آنگاه پوینت بین نویسه "o" و "b" است. در این حالت اگر نویسه "!" را وارد کنید نتیجه "fro!b" خواهد بود. اگر در حال ویرایش چندین پرونده در ایمکس هستید (هر کدام در بافر خودشان) هر بافر مقدار پوینت مخصوص به خود را دارد. اگر تصمیم به نمایش بافری که هم اکنون نمایش داده نمی‌شود را بگیرید، آن بافر مقدار پوینتِ قبلی خود را به خاطر می‌آورد. علاوه بر این اگر یک بافر در چندین پنجره مختلف در حال نمایش باشد، هر پنجره مقدار پوینت خود را دارد.[۳]

خط مُد(mode line):
در پایین هر پنجره یک خط مُد وجود دارد که آشکار میکند چه چیزی در بافر جاری در حال رخ دادن است. خط مُد در کنار پایین‌ترن خطِ پنجره قرار می‌گیرد. وقتی که تنها یک پنجره موجود باشد، خط مُد بالای ناحیه پژواک جای می‌گیرد. در محیط گرافیکی خط مُد به صورت یک جعبه(box) سه‌بعدی ظاهر میشود و ایمکس mode lin ِ پنجره فعال را به صورت برجسته و همچنین با رنگی متمایز نشان میدهد. اجزاء و ترتیب مواردی که در خط مُد نمایش داده میشوند به صورت زیر است:

cs:ch-fr buf       pos line        (major minor )

در محیط غیر گرافیکی، این متن به وسیله تعدادی dash تا منتهی‌الیه سمت راست خط مُد دنبال میشود. این dash ها در محیط گرافیکی حذف میشوند. "cs" به‌همراه نویسه (مثلاً ‘:’ یا ‘\’ ) یا رشته‌ی محصور در پرانتزِ ( مثلاً ‘(DOS)’) بعد از آن، مُعرف مجموعه نویسه‌های (Character set) تعریف شده برای بافر جاری بعلاوه‌ی نوع نشانگر پایان خط (end of line marker) بکار رفته در بافر جاری است.اگر "cs" برابر ‘=’ باشد، بدین معنی است که هیچگونه مجموعه نویسه‌ای برای بافر جاری تعریف نشده است و به هیچ وجه در نمایش تبدیلی (conversion) صورت نمی‌گیرد و این مورد بیشتر برای پروندههای پیش می‌آید که محتوی غیر متنی دارند. اگر "cs" برابر ‘1’ باشد نمایانگر استاندارد لاتین ۱ میباشد. اگر "cs" برابر ‘U’ باشد نمایانگر استاندارد یوتی‌اف-۸ میباشد. با فرمان M-x list-coding-systems میتوان فهرست کامل سیستم‌های کدبندی (coding systems) پشتیبانی شده توسط ایمکس را مشاهده نمود.
در محیط‌های غیر گرافیکی دو نویسه قبل از "cs" ظاهر میشوند که مُعرف سیستم کدبندی استفاده شده توسط صفحه کلید و خروجی ترمینال هستند.
اگر از یکی از روشهای درج (input method) استفاده می‌نمایید، قبل از "cs" (یا قبل از "cs" و دو نویسه‌ی قبل از آن در محیط‌های غیر گرافیکی) یک نویسه که نشانگر شیوه‌ی درج جاری است ظاهر میشود.به عنوان مثال اگر از یکی از شیوهای درج فارسی استفاده نماییم، نویسه ‘ف’ قبل از "cs" ظاهر میشود.
نویسه یا رشته‌ی محصور در پرانتزی که بعد از "cs" می‌آید معُرف نشانه‌ی پایان خطی است که در بافر جاری استفاده میشود.
بر طبق استاندارد ام‌اس‌داس و ویندوز نشانه‌ی پایان خط از دو کاراکتر Carriage Return و Line Feed تشکیل میشود. هنگام ویرایش اینگونه پرونده‌ها نویسه‌ی ‘\’ یا رشته‌ی ‘(DOS)’ (بسته به سیتم عاملی که اینگونه پروندهها را در آن ویرایش می‌نمایید) بعد از "cs" به نمایش درمی‌آید. بر طبق استاندارد یونیکس و لینوکس نشانه‌ی پایان خط تنها از یک کاراکتر Line Feed تشکیل میشود و هنگام ویرایش اینگونه پرونده‌ها نویسه‌ی ‘:’ یا رشته‌ی ‘(Unix)’ بعد از "cs" به نمایش درمی‌آید.
عنصر بعدی که در خط مُد نمایش داده میشود "ch" است. اگر بافری که در پنجره نمایش داده میشود همسان با پروندهی متناظر با آن در دیسک باشد آنگاه "ch" برابر با ‘--’ است و اگر تغییری در این بافر ایجاد شود "ch" برابر با ‘**’ میشود. برای بافرهای فقط خواندنی، "ch" برابر با ‘%%’ است و اگر تغییری در این بافر این شود "ch" برابر با ‘*%’‎ میشود.
نویسه‌ی بعد از "ch" معمولاً یک ‘-’ (در محیط غیر گرافیکی ‘--’) است. اما اگر دایرکتوری پیشفرض برای بافر جاری در یک ماشین راه دور (remote machine) باشد، ‘@’ به جای آن نمایش داده خواهد شد.
"fr" اختصاص به نامِ قاب جاری دارد و فقط در محیط متنی نمایش داده میشود.
"buf" نام بافری است که در پنجره در حال نمایش است. معمولاً این نام همنام با فایلِ متناظر با بافر است.
اگر بافر کوچک باشد و همه آن در پنجره دیده شود، مقدار "pos" برابر با ‘All’ خواهد بود. در غیر اینصورت اگر پنجره در حال نمایشِ بالاترین قسمت بافر باشد این مقدار برابر با ‘Top’ خواهد بود و اگر پنجره در حال نمایش پایین‌ترین قسمت بافر باشد این مقدار برابر با ‘Bot’ خواهد بود.اگر در میانه‌ی بافر باشیم، مقدار "pos" به صورت درصدی نمایش داده می‌شود و نمایانگر درصدی از محتوی بافر است که بالاتر از پنجره قرار گرفته.
مقدار "line" برابر است با L همراهِ با یک عدد که نمایانگر شماره‌ی خطی است که مکان‌نما در آن قرار دارد.
مقدار "major" برابر با نام مُد اصلیِ(major mode) به کار رفته در بافر جاری است. بعضی از مُدهای اصلی مثل مُد کامپایل و مُد پوسته، بعد از نام خود یکسری اطلاعات اضافه‌تر نیز نمایش میدهند.
مقدار "minor" فهرستی از مُدهای خردِ فعال را نمایش میده.
اگر ایمکس در درون یک سطح ویرایش بازگشتی(recursive editing level) باشد، دو براکت اطراف پرانتزهای را که مُدها را احاطه کرده‌اند قرار میگیرند.[۴][۵]

فارسی‌نویسی در ایمکس[ویرایش]

شیوه‌های درج به فارسی در ایمکس [۶][ویرایش]

دو شیوه‌ی درج به فارسی در ایمکس نسخه ۲۴ موجود است.برای استفاده از این شیوه‌ها نیازی به تغییر زبان صفحه کلید به فارسی نیست. هنگام استفاده از هر کدام از این شیوه‌ها برای جابجای بین شیوه‌ی درجِ جاری و زبان کنونی صفحه کلید سیستم عامل، از ‎C-\‎ استفاده می‌شود.

شیوه‌ی درج به فارسی بر اساس استاندارد ۹۱۴۷: برای استفاده از این شیوه فرمان ‎C-\‎ را صادر کرده و در ناحیه پژواک farsi-isiri-9147 را وارد می‌نماییم( معادلِ: ‎M-: (set-input-method 'farsi-isiri-9149)‎ )

شیوه‌ی درج به فارسی بر اساس نویسه‌گردانی بنان: این شیوه برای ایرانیان خارج از کشور که آشنایی با استاندارد ۹۱۴۷ ندارند، طراحی شده است.این شیوه مناسب کسانی است که با صفحه کلید کورتی آشنایی دارند و نمی‌خواهند با استاندارد ۹۱۴۷ وفق یابند بلکه میخواهند نرم‌افزار مطابق عادتهای آنها وفق یابد.برای استفاده از این شیوه فرمان ‎‎C-\‎ را صادر کرده و در ناحیه پژواک farsi-transliterate-banan را وارد می‌نماییم( معادلِ: ‎M-: (set-input-method 'farsi-transliterate-banan)‎ ).در شیوه‌ی نویسه گردانی بنان، کلمات همانگونه که به فارسی نوشته میشوند درنظر گرفته شده‌اند (بر خلاف فنگیلیش که مصوتها در نظر گرفته میشوند) .به عنوان مثال برای نوشتن جمله:

"حالا، با نرم‌افزار حلال میتوانیم به فارسی سالم بنویسیم"

تایپ می‌کنیم :

Hala, ba nrm afzar Hlal mitvanim bh farsi salm bnvisim

با فرمان ‎M-: (describe−input−method 'farsi−transliterate−banan)‎ میتوان اطلاعات بیشتری در مورد این شیوه و پیوند به سایت مروبط به آن را مشاهده نمود.

نشانه‌ی راست‌به‌چپ، چپ‌به‌راست و فاصله مجازی[ویرایش]

درج نشانه‌ی راست‌به‌چپ با M-x ucs-insert RET RIGHT-TO-LEFT MARK , نشانه‌ی چپ‌به‌راست با M-x ucs-insert RET LEFT-TO-RIGHT MARK و فاصله مجازی با M-x ucs-insert RET ZERO WIDTH NON-JOINER همچنین برای سهولت میتوان برای این کاراکترها در فایل ‎~/.emacs کلید میانبر تعریف کرد به عنوان مثال ‎‎(global-set-key [(shift f1)] "")‎ برای درج فاصله مجازی به وسیله فشردن کلید تبدیل همراه با کلید f1

پانویس[ویرایش]

^  M حرف نخست کلمهٔ Meta است.

جستارهای وابسته[ویرایش]

منابع[ویرایش]

پیوند به بیرون[ویرایش]

جستجو در ویکی‌انبار در ویکی‌انبار پرونده‌هایی دربارهٔ ایمکس موجود است.