| JOE() | JOE() |
(NAME)'>نام (NAME)
JOE - ویرایشگر متنی قدرتمند Joe´s Own Editor
خلاصه دستور (SYNOPSIS)
joe [global-options] [ [local-options] filename ]...
jstar [global-options] [ [local-options] filename ]...
jmacs [global-options] [ [local-options] filename ]...
rjoe [global-options] [ [local-options] filename ]...
jpico [global-options] [ [local-options] filename ]...
توضیحات (DESCRIPTION)
برنامه JOE یک ویرایشگر قدرتمند تمامصفحه برای کنسول است. این برنامه دارای رابط کاربری «بدون حالت» (mode-less) مشابه با بسیاری از ویرایشگرهای کاربرپسند رایانههای شخصی است. کاربران نرمافزار WordStar شرکت Micro-Pro یا زبانهای «Turbo» شرکت Borland در این ویرایشگر کاملاً احساس آشنایی خواهند کرد. با این وجود، JOE یک ویرایشگر متنی تمامصفحه و کامل برای UNIX است و ویژگیهای متعددی را برای ویرایش برنامهها و متون ارائه میدهد.
همچنین JOE چندین ویرایشگر دیگر را شبیهسازی میکند. ویرایشگر JSTAR یک بازسازی نزدیک از WordStar همراه با افزونههای متعدد JOE است. ویرایشگر JPICO بازسازی نزدیکی از ویرایشگر PICO سیستم ایمیل Pine است، اما با گسترشها و بهبودهای بسیار. ویرایشگر JMACS یک شبیهساز GNU-EMACS است. ویرایشگر RJOE نسخه محدودشدهای از JOE است که تنها اجازه ویرایش فایلهای مشخصشده در خط فرمان را میدهد.
اگرچه JOE در واقع شامل پنج ویرایشگر مجزا است، اما همچنان به یک فایل اجرایی با پنج نام مختلف نیاز دارد. افزودن پسوند «rc» به انتهای نام هر ویرایشگر، نام فایل پیکربندی اولیهسازی JOE را مشخص میکند که رفتار و ویژگیهای ویرایشگر را تعیین مینماید.
برنامه JOE یک نرمافزار آزاد است؛ شما میتوانید آن را تحت شرایط مجوز عمومی همگانی گنو (GNU General Public License) منتشرشده توسط بنیاد نرمافزارهای آزاد (Free Software Foundation) بازتوزیع کرده یا تغییر دهید. برنامه JOE از طریق اینترنت در نشانی http://www.sourceforge.net/projects/joe-editor در دسترس است.
نحوه استفاده (USAGE)
برای اجرای ویرایشگر، دستور joe را تایپ کرده و در ادامه نام صفر یا چند فایل را که قصد ویرایش آنها را دارید وارد کنید. پیش از نام هر فایل میتوان یک گزینه محلی قرار داد (به جدول گزینههای محلی در ادامه مراجعه کنید). سایر گزینههای سراسری که بر کل ویرایشگر اعمال میشوند را نیز میتوان در خط فرمان مشخص کرد (به جدول گزینههای سراسری در ادامه مراجعه کنید). اگر در حال ویرایش فایلی جدید هستید، میتوانید نام فایل را هنگام فراخوانی ویرایشگر یا هنگام ذخیره آن درون برنامه وارد نمایید. ساختار اصلاحشدهای برای نام فایلها ارائه شده است که امکان ویرایش خروجی برنامهها، ورودی/خروجی استاندارد، یا بخشهایی از فایلها و دستگاهها را فراهم میکند. برای جزئیات بیشتر به بخش Filenames در ادامه مراجعه کنید.
پس از ورود به ویرایشگر، میتوانید متن را تایپ کرده و از توالی کلیدهای کنترلی ویژه برای انجام کارهای ویرایشی استفاده نمایید. برای اطلاع از توالیهای کنترلی، ادامه این صفحه راهنما را بخوانید یا برای مشاهده راهنما در ویرایشگر کلیدهای ^K H را فشار دهید.
نکاتی فنی درباره جزئیات عملکرد کلیدها:
علامت ^ به این معنی است که کلید Control را پایین نگه داشته و همزمان کلید بعدی را فشار میدهید (مشابه عملکرد کلید Shift برای حروف بزرگ). تعدادی از دنبالههای کلید کنترلی روی کلیدهای دیگر نیز نگاشت شدهاند تا نیازی به فشردن کلید Control نباشد: کلید Esc به جای ^[، کلید Del به جای ^?، کلید Backspace به جای ^H، کلید Tab به جای ^I، کلید Return یا Enter به جای ^M و کلید Linefeed به جای ^J کار میکند. ممکن است برخی صفحهکلیدها با بعضی کلیدهای کنترلی مشکل داشته باشند. معمولاً میتوان ^_، ^^ و ^@ را بدون نگهداشتن Shift وارد کرد (برای مثال، ترکیبهای ^-، ^6 و ^2 را امتحان کنید). برخی صفحهکلیدها ممکن است این ترکیبها را به کلیدهای دیگری اختصاص داده باشند؛ کلیدهای ^.، ^, و ^/ را امتحان کنید. کلید ^Space معمولاً میتواند به جای ^@ استفاده شود. کاراکترهای ^\ و ^] توسط بسیاری از برنامههای ارتباطی مانند telnet و kermit تفسیر میشوند؛ معمولاً کافی است کلید را دو بار فشار دهید تا از برنامه ارتباطی عبور کند.
در برخی صفحهکلیدها، پایین نگهداشتن کلید Alt هنگام زدن کلیدی دیگر، معادل فشردن Esc قبل از زدن آن کلید است.
پس از فشردن ^K H، نخستین پنجره راهنما در بالای صفحه ظاهر میشود. در حالی که پنجره راهنما باز است، میتوانید به تایپ و ویرایش متن ادامه دهید. برای ورق زدن و مشاهده سایر مباحث راهنما، کلیدهای Esc , و Esc . (یعنی فشردن Esc , و سپس Esc .) را بزنید. برای بستن پنجره راهنما از ^K H استفاده کنید.
شما میتوانید چیدمان صفحهکلید، صفحههای راهنما و تنظیمات رفتاری پیشفرض متعددی را با کپی کردن فایل پیکربندی اولیهسازی JOE (که معمولاً /etc/joe/joerc است) به نام .joerc در دایرکتوری خانگی خود و سپس ویرایش آن سفارشیسازی کنید. به بخش joerc در ادامه مراجعه کنید.
جهت استفاده از JOE به عنوان ویرایشگر پیشفرض برای ایمیل و اخبار (News)، باید متغیرهای محیطی EDITOR و VISUAL را در فایل راهاندازی پوسته خود (.cshrc یا .profile) طوری مقداردهی کنید که به JOE اشاره کنند (مسیر برنامه معمولاً /usr/bin/joe است).
چندین پارامتر فراخوانی دیگر نیز وجود دارند که در مواقع خاص، بهویژه در حالتی که صفحه ترمینال شما به درستی بهروزرسانی نمیشود، باید تنظیم گردند. به بخش Environment variables در ادامه مراجعه کنید.
گزینهها (OPTIONS)
این گزینهها همچنین میتوانند در فایل joerc مشخص شوند. گزینههای محلی را میتوان بسته به پسوند نام فایل تنظیم کرد. برنامهها (با پسوند .c، .h یا .p) معمولاً قابلیت تورفتگی خودکار (autoindent) فعال دارند. شکستن خودکار خطوط (Wordwrap) در سایر فایلها فعال است، اما برای فایلهای rc غیرفعال شده است.
یک گزینه با تعیین به این صورت فعال میشود:
-
-wordwrap
یک گزینه با تعیین به این صورت غیرفعال میشود:
-
--wordwrap
برخی گزینهها آرگومان میپذیرند. آرگومانها به این صورت داده میشوند:
-
-lmargin 5
گزینههای سراسری زیر را میتوان در خط فرمان مشخص نمود:
- asis
کاراکترهایی با کدهای بالاتر از ۱۲۷ به همان صورت اصلی به ترمینال ارسال خواهند شد، به جای آنکه به عنوان معکوس کاراکتر متناظر زیر ۱۲۸ ارسال شوند. اگر این گزینه کار نکرد، کارگزار ترمینال خود را بررسی کنید. این گزینه در صورت استفاده از کدگذاری UTF-8 هیچ تأثیری ندارد. - assume_256color
شبیهساز ترمینال شبهANSI را دارای پشتیبانی از ۲۵۶ رنگ در نظر میگیرد، حتی اگر ورودی termcap بگوید که پشتیبانی نمیشود. - assume_color
شبیهساز ترمینال شبهANSI را دارای پشتیبانی از رنگ در نظر میگیرد، حتی اگر ورودی termcap بگوید که پشتیبانی نمیشود. - text_color color
تنظیم رنگ متن. - status_color color
تنظیم رنگ نوار وضعیت. - help_color color
تنظیم رنگ راهنما. - menu_color color
تنظیم رنگ منوها. - prompt_color color
تنظیم رنگ اعلانها (prompts). - msg_color color
تنظیم رنگ پیامها. - autoswap
در صورت نیاز، هنگام اجرای دستورهای رونوشت یا انتقال بلوک، به طور خودکار ^K B را با ^K K جابهجا میکند تا یک بلوک متنی معتبر علامتگذاری شود.backpath path
مسیر دایرکتوریای را تنظیم میکند که تمام فایلهای پشتیبان باید در آن ذخیره شوند. اگر این گزینه تنظیم نشده باشد (پیشفرض)، فایلهای پشتیبان در همان دایرکتوری حاوی فایل ذخیره میشوند. - backup_file_suffix string
رشته پسوند مورد استفاده برای نام فایلهای پشتیبان را تنظیم میکند. اگر تنظیم نشده باشد (پیشفرض)، این پسوند ~ است. - baud nnn
نرخ باود (baud rate) را برای بهینهسازی صفحه ترمینال تنظیم میکند (مقداری که توسط stty گزارش شده را نادیده میگیرد). برنامه JOE برای نرخهای باود زیر 19200 تاخیرهایی اعمال میکند که میانگیر tty را دور میزند تا تایپ پیشاپیش (typeahead) بتواند خروجی صفحه را متوقف کند. دستورهای پیمایش (scrolling) برای نرخ باود 38400 و بالاتر استفاده نخواهند شد. این قابلیت برای X-termها و سایر کنسولهای tty که عملاً از روی خط سریال اجرا نمیشوند مفید است. - beep
هنگامی که دستورهای ویرایشی با خطا مواجه میشوند، مثلاً وقتی مکاننما از حد مجاز فراتر میرود، بوق هشدار (beep) را فعال میکند. - break_links
در صورت فعال بودن، JOE ابتدا پیش از نوشتن فایل آن را حذف میکند تا پیوندهای سخت (hard-links) و پیوندهای نمادین (symbolic-links) شکسته شوند. - break_hardlinks
در صورت فعال بودن، و در صورتی که فایل یک پیوند نمادین نباشد، JOE ابتدا پیش از نوشتن فایل آن را حذف میکند تا پیوندهای سخت شکسته شوند. - brpaste
هنگام شروع JOE، دستوری را به شبیهساز ترمینال ارسال میکند که «حالت چسباندن قلابدار» (bracketed paste mode) را فعال میسازد (تنها در صورتی که ترمینال از مجموعه دستورات ANSI پشتیبانی کند). در این حالت، متنی که در پنجره چسبانده میشود با ESC [ 2 0 0 ~ و ESC [ 2 0 1 ~ احاطه میگردد. - columns nnn
تعداد ستونها در شبیهساز ترمینال را تنظیم میکند (در صورتی که مدخل termcap نادرست باشد). این گزینه تنها در سیستمهای قدیمی که فاقد ioctl «دریافت اندازه پنجره» (get window size) هستند کاربرد دارد. - csmode
حالت جستجوی ادامهدار را فعال میکند: فشردنهای متوالی ^K F به جای درخواست جستجوی جدید، جستجوی فعلی را تکرار میکنند. - dopadding
به JOE امکان میدهد تا کاراکترهای فاصلهگذار (padding) NUL را به ترمینال ارسال کند (برای ترمینالهای بسیار قدیمی). - exask
در صورت تنظیم، ^K X پیش از ذخیره فایل، نام جدیدی را درخواست میکند. - floatmouse
در صورت تنظیم، کلیکهای ماوس میتوانند مکاننما را فراتر از انتهای خطوط قرار دهند. - guess_crlf
در صورت تنظیم، JOE تلاش میکند قالب فایل را بین MS-DOS یا UNIX حدس بزند. - guess_indent
در صورت تنظیم، JOE تلاش میکند بر اساس محتوای فایل، نویسه تورفتگی و گام تورفتگی را حدس بزند. الگوریتم بدین صورت است که بزرگترین مقسومعلیه مشترک سه تورفتگی رایجتر در فایل را پیدا میکند. - guess_non_utf8
در صورت تنظیم، حدس زدن فایلهای غیر UTF-8 را در لوکالهای UTF-8 فعال میکند. - guess_utf8
در صورت تنظیم، حدس زدن فایلهای UTF-8 را در لوکالهای غیر UTF-8 فعال میکند. - guess_utf16
در صورت تنظیم، حدس زدن فایلهای UTF-16 را فعال میکند. اگر یک فایل UTF-16BE یا UTF-16LE تشخیص داده شود، هنگام بارگذاری به UTF-8 تبدیل شده و در حین ذخیره مجدداً به UTF-16 بازگردانده میشود. - helpon
در صورت تنظیم، برنامه از ابتدا با راهنمای برخطِ فعال شروع به کار میکند. - help_is_utf8
در صورت تنظیم، فرض میشود که متن راهنما در فایل joerc از نوع UTF-8 است. - icase
در صورت تنظیم، جستجو بهطور پیشفرض به بزرگی و کوچکی حروف حساس نخواهد بود. - joe_state
خواندن و نوشتن در فایل ~/.joe_state را فعال میکند. - joexterm
اگر xterm با گزینه --paste64 برای پشتیبانی بهتر از ماوس پیکربندی شده است، این گزینه را فعال کنید. - keepup
در صورت تنظیم، شماره ستون در خط وضعیت بهطور مداوم بهروزرسانی میشود، در غیر این صورت فقط یک بار در ثانیه بهروزرسانی خواهد شد.language language
زبان را برای aspell تعیین میکند. - lightoff
برجستهسازی ^K B ^K K را پس از یک عملیات بلوک بهطور خودکار خاموش میکند. - lines nnn
تعداد خطوط را در شبیهساز ترمینال تنظیم میکند (در صورتی که مدخل termcap نادرست باشد). این گزینه فقط در سامانههای قدیمی که ioctl مربوط به “get window size” را ندارند مفید است. - marking
حالت نشانهگذاری را فعال میکند: متن میان ^K B و مکاننما را برجسته میکند. - menu_above
منوها را به جای پایین اعلانها، بالای آنها قرار میدهد. - menu_explorer
هنگام انتخاب یک دایرکتوری در منو باقی میماند (در غیر این صورت دایرکتوری به مسیر افزوده شده و مکاننما به اعلان بازمیگردد). - menu_jump
با فشرده شدن Tab Tab به منوی انتخاب فایل میپرد. - mid
اگر این گزینه تنظیم شود و مکاننما به بیرون پنجره حرکت کند، پنجره طوری پیمایش میشود که مکاننما در مرکز قرار گیرد. این گزینه در ترمینالهای کند که فاقد دستورهای پیمایش هستند اجباری است. - left nn
تعداد ستونهایی را تعیین میکند که با عبور مکاننما از لبه سمت چپ یا هنگام اجرای دستور crawll، صفحه به سمت چپ پیمایش میشود. اگر nn منفی باشد، کسری از صفحه است که باید پیمایش شود؛ برای مثال، -2 به معنای پیمایش 1/2 صفحه است. - right nn
تعداد ستونهایی را تعیین میکند که با عبور مکاننما از لبه سمت راست یا هنگام اجرای دستور crawlr، صفحه به سمت راست پیمایش میشود. اگر nn منفی باشد، کسری از صفحه است که باید پیمایش شود؛ برای مثال، -3 به معنای پیمایش 1/3 صفحه است. - mouse
پشتیبانی از ماوس xterm را فعال میکند. - nobackups
فایلهای پشتیبان را غیرفعال میکند. - nocurdir
پیشوند دایرکتوری جاری را در اعلانها غیرفعال میکند. - noexmsg
پیام خروج را غیرفعال میکند (“File not changed so no update needed”). - nolinefeeds
ارسال linefeedها را جهت حفظ تاریخچه صفحه در بافر پیمایش به عقب شبیهساز ترمینال غیرفعال میکند (تنها زمانی کاربرد دارد که حالت notite فعال باشد). - nolocks
قفلهای فایل سازگار با EMACS را غیرفعال میکند. - nomodcheck
بررسی دورهای تغییرات فایل را غیرفعال میکند. - nonotice
این گزینه از نمایش اعلان حق نشر در زمان شروع ویرایشگر جلوگیری میکند. - nosta
این گزینه بالاترین خط وضعیت را حذف میکند. این ویژگی برای مواقعی که فقط میخواهید متن خود را روی صفحه ببینید یا اگر از vt52 استفاده میکنید مناسب است. - notagsmenu
منوی انتخاب برای جستجوی tags با نتایج چندگانه را غیرفعال میکند. - notite
توالیهای ti و te در termcap را که معمولاً برای ذخیره و بازیابی محتویات صفحه ترمینال هنگام شروع و خروج JOE تنظیم شدهاند غیرفعال میکند. - pastehack
اگر ورودی صفحهکلید بهصورت یک بلوک یکپارچه دریافت شود، آن را جایگذاری ماوس فرض کرده و autoindent و wordwrap را غیرفعال میکند.noxon
غیرفعالسازی کنترل جریان ^S و ^Q، که احتمالاً اجازه میدهد از ^S و ^Q به عنوان کلیدهای ویرایشگر استفاده شود. - orphan
یتیم کردن فایلهای اضافیِ دادهشده در خط فرمان به جای باز کردن پنجره برای آنها (فایلها بارگذاری میشوند، اما برای دسترسی به آنها باید از دستورهای switch-buffer استفاده کنید). - pg nnn
تعیین تعداد خطوطی که در حین Page Up و Page Down حفظ میشوند (از -1 برای ۱/۲ اندازه پنجره استفاده کنید). - regex
استفاده پیشفرض از نحو استاندارد عبارات باقاعده (regular expression)، به جای نحو JOE (که در آن نویسههای خاص تنها زمانی معنای ویژه دارند که پیش از آنها بکاسلش بیاید). - restore
تنظیم برای بازیابی موقعیت مکاننما به آخرین موقعیت در فایلهای پیشتر ویرایششده. - rtbutton
جابهجا کردن دکمههای چپ و راست ماوس. - search_prompting
نمایش رشته جستوجوی قبلی در دستور جستوجو (مشابه PICO). - skiptop nnn
هنگامی که روی N تنظیم شود، N خط نخست صفحه ترمینال توسط JOE استفاده نمیشود و در عوض با محتوای اصلی خود رها میشود. این ویژگی برای برنامههایی که JOE را فراخوانی میکنند تا پیامی برای کاربر باقی بگذارند مفید است. - square
فعالسازی حالت بلوک مستطیلی. - transpose
جابهجا کردن سطرها با ستونها در تمام منوها. - title
نمایش زمینه (عنوانها) در خط وضعیت. در صورت فعال بودن، خط اول تابعی که مکاننما در آن قرار دارد روی خط وضعیت نشان داده میشود. فایل نحو context.jsf مشخص میکند کدام خطوط، خطوط عنوان هستند. - type
انتخاب نوع فایل، با بازنویسی نوع تشخیصدادهشده به صورت خودکار. انواع فایل در فایل ftyperc تعریف شدهاند. - undo_keep nnn
تعیین تعداد رکوردهای واگرد (undo) جهت نگهداری (0 به معنای نامحدود است). - usetabs
تنظیم برای مجاز کردن استفاده از تبها در عملیات بلوک مستطیلی. - wrap
فعالسازی چرخش جستوجو و بازگشت به ابتدای فایل.
گزینههای محلی زیر را میتوان در خط فرمان مشخص کرد:
- +nnn
مکاننما روی خط مشخصشده کار خود را آغاز میکند. - autoindent
فعالسازی حالت تورفتگی خودکار. هنگامی که روی یک خط تورفته کلید Enter را میزنید، تورفتگی روی خط جدید تکرار میشود. - c_comment
فعالسازی پرش از روی کامنتهای سبک C یعنی /.../ با استفاده از ^G - cpara characters
تعیین فهرست نویسههایی که میتوانند بندها (پاراگرافها) را تورفته کنند. - cnotpara characters
تعیین فهرست نویسههایی که آغازگر خطوطی هستند که قطعاً بخشی از پاراگرافها نیستند. - cpp_comment
فعالسازی پرش از روی کامنتهای سبک ++C یعنی // ... با استفاده از ^G - crlf
استفاده JOE از دنباله CR-LF به عنوان پایان خط به جای LF تنها. این ویژگی برای ویرایش فایلهای MS-DOS یا VMS است.encoding encoding
تنظیم کدگذاری فایل (مانند utf-8 یا 8859-1). - flowed
تنظیم برای افزودن اجباری یک فاصله اضافی در انتهای هر خط از یک بند، به جز خط آخر. - force
در صورت فعال بودن، اگر هنگام ذخیره فایل نویسه خط جدید پایانی وجود نداشته باشد، به انتهای فایل افزوده میشود. - french
در صورت فعال بودن، در قالببندی مجدد بندها به جای دو فاصله، تنها یک فاصله بعد از نقطهها درج میشود. - hex
فعالسازی حالت hex-dump. - highlight
فعالسازی برجستهسازی نحو (syntax highlighting). - highlighter_context
فعالسازی استفاده از فایل نحو برای شناسایی توضیحات و رشتههایی که باید در تطبیق ^G نادیده گرفته شوند. - indentc nnn
تعیین نویسه تورفتگی برای تغییر مکان به چپ و تغییر مکان به راست (^K , و ^K .). برای Space از 32 و برای Tab از 9 استفاده کنید. - indentfirst
در صورت فعال بودن، کلید home هوشمند ابتدا به نقطه تورفتگی پرش میکند؛ در غیر این صورت، ابتدا به ستون 1 میپرد. - istep nnn
گام تورفتگی را تنظیم میکند. - linums
فعالسازی نمایش شماره خطوط. - lmargin
تنظیم حاشیه چپ. - lmsg
تعریف پیام نوار وضعیت در سمت چپ. - overwrite
فعالسازی حالت رونویسی (overtype). تایپ کردن به جای درج پیش از نویسهها، نویسههای موجود را بازنویسی میکند. - picture
فعالسازی حالت "picture" - به مکاننما اجازه میدهد از انتهای خطوط عبور کند. - pound_comment
دستور ^G توضیحات # ... را نادیده میگیرد. - purify
در صورت نیاز، اصلاح تورفتگی پیش از جابهجایی یا پسبر هوشمند. برای نمونه، اگر تورفتگی از ترکیبی از تبها و فاصلهها استفاده کند و indentc روی فاصله تنظیم شده باشد، تورفتگی پیش از عملیات جابهجایی به تماماً فاصله تبدیل خواهد شد. - rdonly
تنظیم حالت فقطخواندنی. - rmargin nnn
تنظیم حاشیه راست. - rmsg string
تعریف پیام نوار وضعیت در سمت راست. - semi_comment
دستور ^G توضیحات ; ... را نادیده میگیرد. - single_quoted
دستور ^G عبارتهای ´...´ را نادیده میگیرد. - smartbacks
فعالسازی پسبر و تب هوشمند. هنگامی که این حالت فعال باشد، پسبر و تب بر اساس مقادیر گزینههای istep و indentc تورفتگی را ایجاد کرده یا تورفتگی را برمیگردانند.smarthome
کلید Home ابتدا مکاننما را به ابتدای خط، و در صورت فشردن دوباره، به نخستین نویسه غیرخالی منتقل میکند. - smsg string
تعیین قالب دستور وضعیت هنگامی که مکاننما روی یک نویسه قرار دارد. - spaces
درج فاصله (space) هنگام فشرده شدن کلید Tab. - syntax syntax
تنظیم نحو برای برجستهسازی نحوی (syntax highlighting). - tab nnn
تنظیم عرض توقف تب (tab stop width). - text_delimiters word delimiter list
تعیین فهرستی از جداکنندههای کلمات که ^G میان آنها جابهجا خواهد شد.
برای نمونه، "begin=end:if=elif=else=endif" بدان معناست که ^G میان if، elif، else و endif متناظر میپرد.
- vhdl_comment
دستور ^G از کامنتهای -- ... چشمپوشی میکند. - wordwrap
هنگامی که فراتر از حاشیه سمت راست تایپ کنید، JOE کلمه پیشین را به خط بعد منتقل میکند (wordwrap). - zmsg string
تعیین قالب دستور وضعیت هنگامی که مکاننما در انتهای فایل است. - xmsg string
تعیین پیام راهاندازی (معمولاً اعلان حق نشر یا کپیرایت). - aborthint string
تعیین توالی کلیدی که برای لغو عملیات در اعلانها نمایش داده میشود (معمولاً ^C). - helphint string
تعیین توالی کلیدی که برای راهنما در اعلانها نمایش داده میشود (معمولاً ^K H).
رنگها و مشخصهها (Colors and attributes)
مشخصهها و حداکثر یک رنگ پیشزمینه و یک رنگ پسزمینه را با هم ترکیب کنید تا آرگومانهایی برای گزینههای رنگ مانند text_color ایجاد شوند. برای نمونه: bold+bg_green+blue
- مشخصهها: bold، inverse، blink، dim، underline، و italic
- رنگهای پیشزمینه: white، cyan، magenta، blue، yellow، green، red، یا black
- رنگهای پسزمینه: bg_white، bg_cyan، bg_magenta، bg_blue، bg_yellow، bg_green، bg_red، یا bg_black
در یک شبیهساز پایانه ۱۶ رنگی یا ۲۵۶ رنگی (export TERM=xterm-16color)، این رنگهای روشنتر از حالت عادی در دسترس خواهند بود:
- پیشزمینه: WHITE، CYAN، MAGENTA، BLUE، YELLOW، GREEN، RED یا BLACK
- پسزمینه: bg_WHITE، bg_CYAN، bg_MAGENTA، bg_BLUE، bg_YELLOW، bg_GREEN، bg_RED یا bg_BLACK
در یک شبیهساز پایانه ۲۵۶ رنگی (export TERM=xterm-256color)، این موارد در دسترس قرار میگیرند:
- fg_RGB و bg_RGB، که در آنها R، G و B در بازه 0 تا 5 قرار دارند. بنابراین: fg_500 رنگ قرمز روشن است.
- fg_NN و bg_NN طیفهای خاکستری را مشخص میکنند، که در آنها شدت روشنایی، یعنی NN، در بازه 0 تا 23 است.
- گزینه -lmsg رشته چپچین و گزینه -rmsg رشته راستچین را تعریف میکند. نخستین نویسه در -rmsg نویسه پرکننده پسزمینه است.
گزینه -smsg دستور وضعیت (^K Space) را تعریف میکند. گزینه -zmsg نیز زمانی که مکاننما در انتهای فایل است آن را تعیین مینماید. آخرین نویسه smsg یا zmsg نویسه پرکننده است.
دنبالههای گریز (escape sequences) زیر را میتوان در این رشتهها به کار برد:
-
%t زمان ۱۲ ساعته %u زمان ۲۴ ساعته %T مقدار O برای حالت رونویسی (overtype)، مقدار I برای حالت درج (insert) %W مقدار W در صورت فعال بودن شکستن کلمات (wordwrap) %I مقدار A در صورت فعال بودن دندانهگذاری خودکار (autoindent) %X نشانگر حالت مستطیلی (Rectangle mode) %n نام فایل %m عبارت ´(Modified)´ در صورت تغییر یافتن فایل %* نویسه ´*´ در صورت تغییر یافتن فایل %R نشانگر فقطخواندنی %r شماره سطر (خط) %c شماره ستون %o آفست بایتی در فایل %O آفست بایتی در فایل به مبنای ۱۶ (hex) %a مقدار اسکی (Ascii) نویسه زیر مکاننما %A مقدار اسکی نویسه زیر مکاننما به مبنای ۱۶ (hex) %w عرض نویسه زیر مکاننما %p درصد موقعیت مکاننما در فایل %l تعداد خطوط فایل %k کلیدهای پیشوندی واردشده %S عبارت ´*SHELL*´ در صورت اجرای یک پوسته در پنجره %M پیام ضبط ماکرو %y نحو (Syntax) %e کدگذاری (Encoding) %x بافتار (نخستین خط بدون دندانهگذاری با حرکت به عقب) %dd روز %dm ماه %dY سال %Ename% مقدار متغیر محیطی %Tname% مقدار گزینه (ON یا OFF برای گزینههای بولی)
این دنبالههای گریز قالببندی نیز قابل استفاده هستند:
-
\i معکوس (Inverse) \u زیرخط (Underline) \b برجسته (Bold) \d کمرنگ (Dim) \f چشمکزن (Blink) \l مورب (Italic)
ویرایش پایهای (Basic Editing)
هنگامی که نویسهها را در ویرایشگر تایپ میکنید، آنها به طور معمول در فایل در حال ویرایش درج میشوند (یا اگر مکاننما در انتهای فایل باشد، به فایل افزوده میشوند). این حالت کاری معمول ویرایشگر است. اگر میخواهید بخشی از متن موجود را جایگزین کنید، باید متن پیشین را پیش یا پس از نوشتن متن جایگزین، حذف کنید. از کلید Backspace میتوان برای پاک کردن متن استفاده کرد: مکاننما را به بعد از متنی که قصد حذف آن را دارید ببرید و Backspace را به تعداد دفعات لازم بفشارید.
برای ایجاد شکست خط (line-break) کلید Enter یا Return را بفشارید. برای نمونه، اگر مکاننما در میانه یک خط باشد و کلید Enter را بفشارید، خط به دو نیم تقسیم شده و مکاننما در ابتدای خط دوم قرار میگیرد. برای حذف شکست خط، در ابتدای یک خط کلید Backspace را بفشارید.
از کلیدهای جهتنما برای حرکت در فایل استفاده کنید. اگر صفحهکلید شما این کلیدها را ندارد (یا بنا به دلایلی کار نمیکنند)، از ^F برای حرکت به جلو (راست)، ^B برای حرکت به عقب (چپ)، ^P برای رفتن به خط قبلی (بالا) و ^N برای رفتن به خط بعدی (پایین) استفاده کنید. کلیدهای جهتنمای چپ و راست تنها یک نویسه در هر بار به جلو یا عقب در متن جابهجا میشوند: اگر در ابتدای یک خط باشید و جهتنمای چپ را فشار دهید، به انتهای خط پیشین خواهید رفت. کلیدهای جهتنمای بالا و پایین مکاننما را به اندازهای به جلو و عقب جابهجا میکنند که در همان ستونی قرار گیرد که در خط قبلی قرار داشت.
اگر میخواهید متن ورودی را دندانهگذاری (indent) کنید، میتوانید از کلید Tab بهره ببرید. این کلید یک نویسه کنترلی ویژه درج میکند که باعث میشود نویسههای پس از آن از توقفگاه تب (tab stop) بعدی آغاز شوند. توقفگاههای تب معمولاً هر ۸ ستون یکبار قرار دارند، اما این فاصله با دستور ^T D قابل تغییر است. برنامهنویسان زبانهای C و PASCAL معمولاً توقفگاههای تب را روی هر ۴ ستون تنظیم میکنند.
چنانچه بنا به دلیلی صفحه پایانه شما بههم ریخت (برای نمونه، در صورت دریافت اعلان رایانامه از biff)، میتوانید با فشردن ^R صفحه نمایش ویرایشگر را تازهسازی کنید.
کلیدهای بسیار دیگری نیز برای حذف متن و جابهجایی در فایل وجود دارد. برای نمونه، فشردن ^D نویسهای را که مکاننما روی آن قرار دارد حذف میکند، بر خلاف Backspace که به سمت عقب حذف انجام میدهد. همچنین اگر مکاننما در انتهای یک خط باشد، ^D شکست خط را حذف خواهد کرد. برای حذف کل خطی که مکاننما روی آن است ^Y و برای حذف متن از جایگاه مکاننما تا انتهای خط، ^J را تایپ کنید.
برای بردن
مکاننما
به ابتدای
خط جاری ^A را
بفشارید.
برای بردن
مکاننما
به انتهای
خط ^E را
بفشارید.
فشردن ^U یا
^V صفحه را به
اندازه نیم
صفحه به
بالا یا
پایین
پیمایش (scroll)
میکند.
«پیمایش»
بدین
معناست که
متن روی
صفحه
جابهجا
میشود،
اما
مکاننما
نسبت به قاب
صفحه در
جایگاه خود
باقی
میماند.
برای بردن
مکاننما
به ابتدا یا
انتهای
فایل،
کلیدهای ^K U
یا ^K V را
بفشارید.
برای
مشاهده
دستورهای
حذف و
جابهجایی
بیشتر، به
صفحههای
راهنمای
درون
ویرایشگر
مراجعه
کنید.
در صورت بروز اشتباه، میتوانید ^_ را برای بازگردانی («undo») آن بفشارید. در بیشتر صفحهکلیدها تنها با زدن ^- به ^_ دسترسی دارید، اما در برخی ممکن است نیاز باشد کلیدهای Shift و Control را همزمان نگه دارید. چنانچه عملیات بازگردانی را بیش از اندازه انجام دادید، میتوانید با فشردن ^^ تغییرات را دوباره برگردانید («redo») (در اکثر صفحهکلیدها این کار با زدن ^6 انجام میشود).
تاریخچه موقعیت مکاننما (Cursor position history)
اگر در نقطهای از فایل در حال ویرایش بودید و موقتاً نیاز شد بخش دیگری از فایل را ببینید یا ویرایش کنید، میتوانید با فشردن ^K - به جایگاه اولیه خود بازگردید. این دستور در واقع شما را به آخرین نقطهای که در فایل تغییری ایجاد کردهاید برمیگرداند. میتوانید با ^K - و ^K = در تاریخچه موقعیتها گام بردارید، همانگونه که با دستورهای «undo» و «redo» در تاریخچه تغییرات جابهجا میشوید.
ذخیره و خروج (Save and exit)
هنگامی که کار ویرایش فایل به پایان رسید، ^K X را برای خروج از ویرایشگر بفشارید. چنانچه فایلی که در حال ویرایش آن هستید نامگذاری نشده باشد، از شما درخواست نام خواهد شد.
هنگام ویرایش یک فایل، در حقیقت تنها یک کپی از آن را ویرایش میکنید. بنابراین اگر تصمیم گرفتید تغییراتی را که در یک نشست ویرایشی انجام دادهاید اعمال نکنید، میتوانید با فشردن ^C بدون ذخیرهسازی از ویرایشگر خارج شوید.
اگر فایلی را ویرایش کرده و تغییرات را ذخیره کنید، یک نسخه پشتیبان از آن فایل در دایرکتوری جاری و با افزودن نویسه ~ به نام آن ایجاد میشود که دربردارنده نسخه اصلی فایل است.
عملیات فایل (File operations)
میتوانید ^K D را برای ذخیره فایل جاری بفشارید (احتمالاً با نامی متفاوت از نام اصلی فایل). پس از ذخیره فایل، میتوانید برای ویرایش فایلی دیگر ^K E را بفشارید.
چنانچه قصد دارید تنها بخش مشخصی از فایل را ذخیره نمایید، بخش Blocks را در ادامه بررسی کنید.
اگر میخواهید فایلی دیگر را درون فایل در حال ویرایش بگنجانید، از ^K R برای درج آن استفاده کنید.
هر جا که JOE
انتظار
دارد نام
فایلی را
وارد کنید،
چه در خط
فرمان و چه
در
اعلانهای
درون
ویرایشگر،
میتوانید
موارد زیر
را نیز تایپ
کنید:
- •
- !command
برای خواندن یا نوشتن داده از یا به یک دستور شل. برای مثال، از joe ´!ls´ برای دریافت رونوشتی از فهرست دایرکتوری خود جهت ویرایش استفاده کنید، یا از درون ویرایشگر از ^K D !mail jhallen@world.std.com برای ارسال فایلی که در حال ویرایش آن هستید استفاده نمایید.
- •
- >>filename
از این مورد برای الحاق متن ویرایششده توسط JOE به انتهای فایل "filename" استفاده کنید.
- •
- filename,START,SIZE
از این مورد برای دسترسی به بخش ثابتی از یک فایل یا دستگاه استفاده کنید. مقادیر START و SIZE ممکن است در مبنای دهدهی (مثال: 123)، هشتهشتی (مثال: 0777) یا شانزدهشانزدهی (مثال: 0xFF) وارد شوند. برای مثال، از joe /dev/fd0,508,2 برای ویرایش بایتهای 508 و 509 از نخستین فلاپیدرایو در لینوکس استفاده کنید.
- •
- -
از این مورد برای دریافت ورودی از ورودی استاندارد یا نوشتن خروجی در خروجی استاندارد استفاده کنید. برای مثال، اگر میخواهید در مورد سهمیهٔ کم دیسک خود شکایت کنید، میتوانید JOE را در یک لوله از دستورات قرار دهید: quota -v | joe | mail root.
استفاده از JOE در اسکریپت شل (Using JOE in a shell script)
در گذشته JOE برای دسترسی به ترمینال از /dev/tty استفاده میکرد. این کار مشکلی را با برنامههای خاتمهدهندهٔ نشستهای بیکار ایجاد میکرد (آنها JOE را متوقف میکردند زیرا به دستگاه tty واقعی برای مدتی طولانی دسترسی پیدا نمیشد)، بنابراین اکنون JOE تنها زمانی از /dev/tty استفاده میکند که نیاز به هدایت لولهای یک فایل به درون JOE داشته باشید، مانند:
-
echo "hi" | joe
اگر میخواهید از JOE در یک اسکریپت شل استفاده کنید که stdin/stdout آن تغییر مسیر داده شده است، اما نیازی به هدایت لولهای به آن ندارید، بهسادگی باید stdin/stdout مربوط به JOE را به /dev/tty تغییر مسیر دهید:
-
joe filename </dev/tty >/dev/tty
شکستن خط و قالببندی (Word wrap and formatting)
اگر در فایلی به زبان C یا PASCAL از لبهٔ سمت راست صفحه فراتر تایپ کنید، صفحه به سمت راست پیمایش خواهد کرد تا مکاننما را دنبال کند. اگر در یک فایل معمولی (فایلی که نام آن به .c، .h یا .p ختم نمیشود) از لبهٔ راست صفحه فراتر تایپ کنید، JOE بهطور خودکار آخرین کلمه را به خط بعدی میشکند تا نیازی به زدن کلید Enter نداشته باشید. به این حالت، شکستن خط بر پایهٔ کلمه (word-wrap mode) گفته میشود. حالت Word-wrap را میتوان با دستور ^T W روشن یا خاموش کرد. فایل مقداردهی اولیهٔ JOE معمولاً بهگونهای تنظیم شده است که این حالت بهطور خودکار برای همهٔ فایلهای غیربرنامهای فعال باشد. برای تغییر این مورد و سایر پیشفرضها، بخش مربوط به فایل joerc را در ادامه ببینید.
بهجز حالت Word-wrap، نرمافزار JOE بر خلاف برخی از واژهپردازها پاراگرافها را بهطور خودکار قالببندیشده نگه نمیدارد. در عوض، اگر نیاز دارید پاراگرافی بازقالببندی شود، ^K J را بزنید. این دستور پاراگرافی را که مکاننما در آن قرار دارد «پر میکند» و تا حد امکان بیشترین کلمات ممکن را در یک خط جای میدهد. در این حالت، پاراگراف بلوکی از متن است که از بالا و پایین با یک خط خالی جدا شده باشد.
حاشیههایی که JOE برای قالببندی پاراگراف و شکستن کلمات استفاده میکند با دستورات ^T L و ^T R قابل تنظیم هستند. اگر حاشیهٔ چپ روی مقداری غیر از 1 تنظیم شده باشد، هنگامی که تایپ را در ابتدای یک خط شروع میکنید، مکاننما بلافاصله به حاشیهٔ چپ خواهد پرید.
تعدادی گزینه وجود دارند که بازقالببند پاراگراف و شکنندهٔ کلمات را کنترل میکنند:
- گزینهٔ cpara فهرستی از نویسههایی را تعیین میکند که میتوانند به پاراگراف تورفتگی دهند. برای مثال، در رایانامه محتوای نقلقولشده با > در ابتدای خط مشخص میشود، بنابراین این نویسه باید در فهرست cpara قرار گیرد.
- گزینهٔ cnotpara فهرستی از نویسههایی را تعیین میکند که اگر اولین نویسهٔ غیرفاصلهای یک خط باشند، نشان میدهند که آن خط نباید به عنوان بخشی از پاراگراف برای قالببندی در نظر گرفته شود. برای مثال، خطوطی که در nroff با ´.´ شروع میشوند نمیتوانند خطوط پاراگراف باشند.
- حالت تورفتگی خودکار (Autoindent) بر قالببند تأثیر میگذارد. اگر autoindent غیرفعال باشد، فقط خط اول تورفته خواهد شد. اگر autoindent فعال باشد، کل پاراگراف تورفتگی پیدا میکند.
- گزینهٔ french مشخص میکند چه تعداد فاصله پس از نقطهها درج شود.
- هنگامی که flowed فعال باشد، پس از هر خط پاراگراف بهجز خط آخر یک فاصله درج میشود. این مورد در برخی برنامهها نشان میدهد که خطوط در کنار هم متعلق به یک پاراگراف واحد هستند.
- هنگامی که overtype فعال باشد، شکنندهٔ کلمات خطوط جدید درج نخواهد کرد.
وسطچین کردن (Centering)
اگر میخواهید خطی را در میان حاشیهها وسطچین کنید، از دستور ^K A استفاده کنید.
غلطیاب املایی (Spell checker)
برای بررسی املای کلمهای که مکاننما روی آن قرار دارد با استفاده از برنامهٔ aspell (یا برنامهٔ ispell در صورتی که فایل joerc را تغییر دهید)، کلیدهای Esc N را بزنید. برای بررسی بلوک مشخصشده، یا در صورت مشخص نبودن هیچ بلوکی بررسی کل فایل، Esc L را بزنید.
برنامهٔ JOE زبان و کدگذاری نویسهها را به غلطیاب املایی ارسال میکند. برای تغییر زبان، ^T V را بزنید. برای مثال، از en_US برای انگلیسی استفاده کنید.
حالت رونویسی (Overtype mode)
گاهی
اوقات
خستهکننده
است که پیش
یا پس از درج
متن جدید،
مجبور به
حذف متن
قدیمی
باشید. این
اتفاق برای
مثال زمانی
رخ میدهد
که در حال
ویرایش یک
جدول هستید
و
میخواهید
موقعیت
ستونهای
سمت راست
جدول را حفظ
کنید.
زمانی که
این رخ
میدهد،
میتوانید
ویرایشگر
را با ^T T در
حالت
رونویسی
قرار دهید.
هنگامی که
ویرایشگر
در این حالت
است،
نویسههایی
که تایپ
میکنید
جایگزین
نویسههای
موجود
میشوند،
همانگونه
که در یک
ماشین
تحریر
ایدهآل رخ
میدهد.
همچنین،
هنگامی که
مکاننما
در ابتدا یا
انتهای یک
خط نباشد،
کلید Backspace
بهجای حذف
نویسهٔ سمت
چپ، صرفاً
به سمت چپ
حرکت
میکند.
حالت
رونویسی
روشی طبیعی
برای کار با
متن
بهصورت
الکترونیکی
نیست،
بنابراین
باید با
فشردن مجدد
^T T هر چه
سریعتر به
حالت درج (insert-mode)
بازگردید.
اگر در حالی که در حالت رونویسی هستید نیاز به درج کردن داشتید، ^@ را بزنید. این کار یک Space تنها را در متن درج میکند. هر نویسه با یک عدد نمایش داده میشود. برای مثال، عدد نویسهٔ ´A´ برابر با 65 و عدد نویسهٔ ´1´ برابر با 49 است. تمام نویسههایی که بهطور معمول مشاهده میکنید عددهایی در بازهٔ 32 - 126 دارند (این انتساب اختیاری ویژه میان نویسهها و عددها مجموعه نویسهٔ ASCII نامیده میشود). عددهای خارج از این بازه، از 0 تا 255، معمولاً نمایش داده نمیشوند، اما گاهی معانی ویژهٔ دیگری دارند. برای نمونه، عدد 10 برای شکستن خط استفاده میشود. میتوانید این نویسههای کنترلی ویژه و غیرقابلنمایش را ابتدا با فشردن ^Q و سپس فشردن نویسهای در بازهٔ @ A B C ... X Y Z [ ^ ] \ _ برای بهدست آوردن شمارههای 0 - 31، و ? برای 127 وارد کنید. به عنوان مثال، اگر ^Q J را بفشارید، یک نویسهٔ شکست خط درج خواهید کرد، یا اگر ^Q I را بفشارید، یک نویسهٔ Tab درج میکنید (که دقیقاً همان کار کلید Tab را انجام میدهد). یک نویسهٔ کنترلی کاربردی برای درج، 12 (^Q L) است که در بیشتر چاپگرها باعث رفتن به بالای صفحهٔ بعد میشود. متوجه خواهید شد که JOE این نویسه را با یک L زیرخطدار نمایش میدهد. میتوانید نویسههای بالاتر از 127، یعنی نویسههای متا را با فشردن ابتدایی ^\ وارد نمایید. این کار مقدار 128 را به نویسهٔ بعدی (احتمالاً کنترلی) واردشده میافزاید. ویرایشگر JOE نویسههای بالاتر از 128 را به صورت ویدئوی معکوس (inverse-video) نمایش میدهد. برخی زبانهای خارجی که حروفی بیشتر از انگلیسی دارند، از نویسههای متا برای باقی الفبای خود استفاده میکنند. باید ویرایشگر را در حالت asis قرار دهید تا این نویسهها بدون تغییر به پایانه فرستاده شوند.
نکته: ویرایشگر JOE اکنون در حالت عادی تمام 8 بیت را به پایانه میفرستد مگر اینکه محلیسازی (locale) روی C یا POSIX تنظیم شده باشد. اگر لوکال C یا POSIX باشد، پرچم asis تعیین میکند که آیا نویسههای متا در ویدئوی معکوس نمایش داده شوند یا مستقیماً به پایانه ارسال گردند.
نکته: در نسخههای قدیمیتر JOE، باید از Esc ´ برای وارد کردن نویسههای کنترلی استفاده میکردید.
مجموعههای نویسه و UTF-8 (Character sets and UTF-8)
برنامهٔ JOE بهطور بومی از دو دسته مجموعه نویسه پشتیبانی میکند: UTF-8 و کدگذاریشده بهصورت بایتی (مانند ISO-8859-1). برای این مجموعههای نویسه، فایل همانگونه که هست در حافظه بارگذاری میشود و هنگام ذخیرهسازی دقیقاً حفظ میگردد، حتی اگر شامل خطاهای کدگذاری UTF-8 باشد.
این برنامه هنوز نمیتواند بهطور بومی از دیگر دستههای اصلی مانند UTF-16 یا GB2312 پشتیبانی کند. محدودیتهای دیگری نیز وجود دارد: مجموعههای نویسه باید از LF (0x0A) یا CR-LF (0x0D - 0x0A) به عنوان پایاندهندهٔ خط استفاده کنند، فاصله باید 0x20 و تب باید 0x09 باشد. اساساً، فایلها باید فایلهای متنی سازگار با UNIX یا MS-DOS باشند.
این بدان معناست که EBCDIC بهدرستی کار نخواهد کرد (اگرچه در هر صورت نیاز به مدیریت خطوط با طول رکورد ثابت دارید) و مجموعههای نویسهای که از خطوط پایانیافته با CR استفاده میکنند (سیستمهای قدیمی مک) هنوز کار نخواهند کرد.
اکنون JOE از UTF-16 (هم big endian و هم little endian) پشتیبانی میکند. این پشتیبانی از طریق تبدیل به UTF-8 در هنگام بارگذاری و تبدیل مجدد به UTF-16 در زمان ذخیرهسازی انجام میشود.
پایانه و فایل میتوانند کدگذاریهای متفاوتی داشته باشند. برنامهٔ JOE بین این دو تبدیل انجام میدهد. در حال حاضر، یکی از این دو باید UTF-8 باشد تا تبدیل کار کند.
مجموعه نویسهٔ پایانه و مجموعه نویسهٔ پیشفرضی که برای فایلها در نظر گرفته میشود توسط متغیر محیطی ´LC_ALL´ تعیین میگردد (و اگر تنظیم نشده باشد، LC_CTYPE و LANG نیز بررسی میشوند).
برای مثال، اگر LC_ALL روی مقدار زیر تنظیم شده باشد:
-
de_DE
آنگاه مجموعه نویسه ISO-8859-1 خواهد بود.
اگر LC_ALL روی مقدار زیر تنظیم شده باشد:
-
de_DE.UTF-8
مجموعه نویسه UTF-8 خواهد بود.
کلیدهای ^T E را بفشارید تا کدگذاری فایل را تغییر دهید. در این اعلان، دو بار Tab Tab را بزنید تا فهرستی از کدگذاریهای موجود به دست آورید. چندین مجموعه نویسهٔ توکار وجود دارد، به علاوه میتوانید مجموعههای نویسه را در دایرکتوریهای ~/.joe/charmaps و /usr/share/joe/charmaps نصب کنید.
مسیر /usr/share/i18n/charmaps را برای فایلهای نمونهٔ مجموعه نویسه بررسی کنید. تنها مجموعههای نویسهٔ بایتمحور کار خواهند کرد. همچنین فایل نباید فشردهشده با gzip باشد (همهٔ فایلهای charmap در مسیر /usr/share/i18n/charmaps روی رایانهٔ من فشرده بودند). تجزیهکننده بسیار نامنعطف است، بنابراین فایل اساساً باید دقیقاً شبیه نمونهٔ موجود در /usr/share/joe/charmaps باشد.
میتوانید ^K Space را برای دیدن مجموعه نویسهٔ فعلی بفشارید.
اگر کدگذاری فایل UTF-8 باشد، میتوانید ^Q x را برای وارد کردن یک نویسهٔ یونیکد بفشارید.
اعلانها (Prompts)
بیشتر اعلانها تاریخچهای از پاسخهایی که به آنها میدهید را ضبط میکنند. میتوانید کلیدهای جهتنمای بالا و پایین را برای پیمایش در این تاریخچهها بفشارید.
اعلانها در واقع پنجرههایی تکخطی و بدون سطر وضعیت هستند، بنابراین میتوانید از هر دستور ویرایشی که معمولاً روی متن به کار میبرید، در داخل اعلانها نیز استفاده کنید. تاریخچهٔ اعلان در واقع خطوط دیگری از همان «فایل اعلان» است. از این رو در صورت تمایل میتوانید با دستور معمول ^K F در تاریخچهٔ اعلان به عقب جستجو کنید.
از آنجا که اعلانها پنجره هستند، میتوانید با ^K P و ^K N نیز از آنها بیرون رفته و پنجره را تعویض کنید.
منوهای تکمیل خودکار و گزینش (Completion and selection menus)
در تقریباً هر اعلانی میتوانید کلید Tab را بفشارید تا از JOE بخواهید کلمهای را که تایپ میکنید تکمیل کند. اگر JOE بوق زد، یا هیچ تکمیلی وجود ندارد یا گزینههای متعددی وجود دارد. همانند پوستهٔ «bash»، دو بار کلید Tab را بزنید تا فهرستی از تمام گزینههای ممکن نشان داده شود. این فهرست در واقع یک منو است، اما بهطور پیشفرض، مکاننما وارد آن نمیشود زیرا معمولاً تایپ کردن انتخابتان آسانتر است. با این حال، میتوانید با ^K P (رفتن به پنجرهٔ قبلی) به پنجرهٔ منو بروید و با کلیدهای جهتنما و <Enter> انتخاب خود را انجام دهید. همچنین در یک منو، میتوانید نخستین حرف هر یک از موارد را بفشارید تا مکاننما مستقیماً به آن مورد بپرد. منوی گزینههای ^T به این شکل کار میکند.
اگر منو برای گنجیدن در پنجره بیش از حد بزرگ باشد، میتوانید کلیدهای Page Up و Page Down را برای پیمایش آن بفشارید (حتی اگر مکاننما را وارد آن نکرده باشید).
تکمیل با Tab در اعلانهای جستجو و جایگزینی نیز کار میکند. در این حالت، JOE تلاش میکند کلمه را بر پایهٔ محتویات بافر تکمیل کند. اگر میخواهید خود نویسهٔ Tab را جستجو کنید، میتوانید آن را با ^Q Tab وارد نمایید.
همچنین، میتوانید در یک پنجرهٔ متنی کلیدهای Esc Enter را بفشارید تا از JOE بخواهید کلمهای را که تایپ میکنید تکمیل کند. مانند اعلان جستجو، JOE تلاش میکند کلمه را بر پایهٔ محتویات بافر تکمیل نماید. اگر دوبار Esc Enter را بفشارید، منویی از گزینههای ممکن ظاهر خواهد شد.
من کجا هستم؟ (Where am I?)
کلیدهای ^K Space را بفشارید تا JOE شمارهٔ خط، شمارهٔ ستون و شمارهٔ بایت را در آخرین خط صفحه نمایش دهد. عددی که به نویسهٔ زیر مکاننما اختصاص دارد (کد ASCII آن) نیز نمایش داده میشود. میتوانید با قرار دادن توالیهای گریز مناسب در رشتههای پیکربندی نوار وضعیت، کاری کنید که شمارهٔ خط و/یا شمارهٔ ستون همیشه در نوار وضعیت نمایش داده شوند. برای جزئیات، فایل joerc را ویرایش کنید.
اگر تصادفاً ^K را زدم چه؟ (What if I hit <strong>^K</strong> by accident?)
کلید فاصله (space bar) را فشار دهید. این کار فرمانی بیخطر را اجرا میکند (شمارهٔ خط را در نوار وضعیت نشان میدهد).
تعلیق موقت ویرایشگر (Temporarily suspending the editor)
اگر نیاز دارید ویرایشگر را موقتاً متوقف کرده و به پوسته بازگردید، ^K Z را بفشارید. برای مثال، ممکن است بخواهید ویرایش هر آنچه را انجام میدهید متوقف کنید تا به یک رایانامه پاسخ دهید یا همین صفحهٔ راهنما را بخوانید. برای بازگشت به ویرایشگر باید fg یا exit را تایپ کنید (هنگامی که ^K Z را میزنید به شما گفته خواهد شد کدام یک را تایپ کنید).
جستجوی متن (Searching for text)
کلیدهای ^K
F را
بفشارید تا
ویرایشگر
برای شما به
جلو یا عقب
به دنبال
بخشی از متن
(string) بگردد. از
شما متنی که
میخواهید
جستجو کنید
پرسیده
خواهد شد. پس
از زدن Enter،
از شما
خواسته
میشود
گزینهها
را وارد
کنید.
میتوانید
مجدداً
کلید Enter را
فشار دهید
تا
ویرایشگر
بلافاصله
به سمت جلو
متن را
جستجو کند،
یا
میتوانید
یک یا چند
مورد از این
گزینهها
را وارد
کنید:
- •
- b
جستجو به سمت عقب به جای جلو.
- •
- i
یکسان در نظر گرفتن حروف بزرگ و کوچک هنگام جستجو. در حالت عادی حروف بزرگ و کوچک متفاوت در نظر گرفته میشوند.
- •
- nnn
(که در آن nnn یک عدد است) اگر عددی وارد کنید، JOE به دنبال Nـمین رخداد متن میگردد. این ویژگی برای رفتن به مکانهای مشخصی در فایلهایی با ساختار منظم سودمند است.
- •
- r
جایگزینی متن. اگر گزینهٔ r را وارد کنید، سپس متن جایگزین از شما پرسیده خواهد شد. هر بار که ویرایشگر متن جستجوشده را پیدا کند، از شما پرسیده میشود که آیا مایلید متن یافتشده را با متن جایگزین تعویض کنید یا خیر. میتوانید کلیدهای زیر را بفشارید: y برای جایگزینی متن و سپس یافتن مورد بعدی، n برای جایگزین نکردن این متن و رفتن به مورد بعدی، r برای جایگزینی تمام رخدادهای باقیمانده از متن مورد جستجو در ادامهٔ فایل بدون درخواست تأیید (مشروط به گزینهٔ nnn در بالا)، یا ^C برای توقف جستجو و جایگزینی.
همچنین میتوانید B یا Backspace را برای بازگشت به متن پیشتر یافتشده بفشارید (اگر جایگزین شده باشد، جایگزینی واگردانی میشود).
- •
- a
جستجو تمامی بافرهای بارگذاریشده را شامل میشود. بنابراین برای جایگزینی همه نمونههای "foo" با "bar" در تمام فایلهای .c در دایرکتوری جاری:
-
joe *.c ^K F foo <Enter> ra <Enter> bar <Enter>
- •
- e
جستجو تمامی فایلها را در فهرست خطای grep یا make در بر میگیرد. میتوانید از یک دستور UNIX برای ساخت فهرستی از فایلها و جستجو و جایگزینی در سرتاسر آن فهرست بهره بگیرید. بنابراین برای جایگزینی همه نمونههای "foo" با "bar" در تمام فایلهای .c که با f آغاز میشوند. همچنین میتوانید به جای grep از "ls" و "find" برای ساخت فهرست فایلها استفاده کنید.
-
Esc G grep -n foo f*.c <Enter> ^K F foo <Enter> re <Enter> bar <Enter>
- •
- x
در صورت دادن این گزینه، JOE از نحو استاندارد برای عبارتهای باقاعده استفاده خواهد کرد. در نحو استاندارد، این نویسهها مستقیماً معنای ویژهٔ خود را دارند و نیازی به گریز دادن (escape) آنها با بکاسلش نیست: ., *, +, ?, {, }, (, ), |, ^, $ و [.
- •
- y
ویرایشگر JOE بهجای نحو استاندارد، از نحو اختصاصی JOE برای عبارتهای باقاعده استفاده خواهد کرد. این گزینه بر گزینهٔ «-regex» اولویت دارد.
- •
- v
ویرایشگر JOE اطلاعات اشکالزدایی مربوط به عبارت باقاعده را به گزارش راهاندازی (startup log) ارسال خواهد کرد. این گزارش را میتوان با دستور showlog مشاهده کرد.
میتوانید برای تکرار جستجوی قبلی ^L را فشار دهید.
میتوانید در اعلان گزینههای جستجو و جایگزینی، ^K H را فشار دهید تا فهرستی از تمام گزینههای جستجو و جایگزینی نشان داده شود.
عبارتهای باقاعده (Regular Expressions)
تعدادی توالی نویسهایِ ویژه میتوانند به عنوان متن جستجو وارد شوند:
- •
- \*
این توالی صفر یا چند مورد از مورد سمت چپ را مییابد. برای مثال، اگر AB\*C را به عنوان متن جستجو بدهید، JOE تلاش خواهد کرد تا یک A که به دنبال آن هر تعداد B، و سپس یک C آمده است را بیابد.
- •
- \+
این توالی یک یا چند مورد از مورد سمت چپ را مییابد. برای مثال، اگر AB\+C را به عنوان متن جستجو بدهید، JOE تلاش خواهد کرد تا یک A که به دنبال آن یک یا چند B، و سپس یک C آمده است را بیابد.
- •
- \?
این توالی نشان میدهد که مورد سمت چپ اختیاری است. برای مثال، اگر AB\?C را به عنوان متن جستجو بدهید، JOE رشتههای AC یا ABC را خواهد یافت.
- •
- \{min,max}
این توالی مشخص میکند که JOE باید رشتهای با تعداد تکرار مشخصی از مورد سمت چپ پیدا کند. برای مثال، AX\{2,5}B با این رشتهها مطابقت خواهد داشت: AXXB، AXXXB، AXXXXB، و AXXXXXB. مقدار Min میتواند برای نشان دادن ۰ تکرار حذف شود. مقدار Max (و ویرگول) میتواند برای نشان دادن هر تعداد تکرار حذف شود.
- •
- \.
این توالی دقیقاً یک نویسه را مییابد. برای مثال، اگر A\.B را به عنوان متن جستجو بدهید، JOE رشتهٔ AXB را پیدا میکند، اما AB یا AXXB را نخواهد یافت.
- •
- \!
این توالی مانند . عمل میکند، اما با یک عبارت متوازن در زبان C مطابقت مییابد. برای مثال، اگر malloc(\!\*) را جستجو کنید، آنگاه JOE تمام فراخوانیهای تابع به malloc را پیدا میکند، حتی اگر یک ) درون پرانتزها باشد.
- •
- \|
این توالی مورد سمت چپ یا مورد سمت راست را مییابد. برای مثال، اگر A\|B را به عنوان متن جستجو بدهید، JOE تلاش خواهد کرد تا یا یک A یا یک B پیدا کند.
- •
- \( \)
از اینها برای گروهبندی نویسهها در کنار یکدیگر استفاده کنید. برای مثال، اگر \(foo\)\+ را جستجو کنید، JOE رشتههایی مانند «foo» و «foofoofoo» را پیدا خواهد کرد.
- •
- ^ \$
این نویسهها با ابتدا و انتهای خطوط مطابقت پیدا میکنند. برای مثال، اگر ^test\$ را بدهید، JOE کلمهٔ test را بهتنهایی در یک خط خواهد یافت.
- •
- \\\
اینها با ابتدا و انتهای کلمات مطابقت دارند. برای مثال، اگر \is\\ را وارد کنید، JOE کلمهٔ «is» را پیدا میکند، اما «is» موجود در «this» را نخواهد یافت.
- •
- \[...]
این توالی با هر نویسهٔ تکی که درون قلابها ظاهر شود مطابقت مییابد. برای مثال، اگر \[Tt]his به عنوان رشتهٔ جستجو وارد شود، JOE هر دو رشتهٔ This و this را پیدا میکند. بازههایی از نویسهها نیز میتوانند درون قلابها وارد شوند. برای مثال، \[A-Z] هر نویسهٔ حرف بزرگ را مییابد. اگر نخستین نویسهٔ دادهشده درون قلابها ^ باشد، JOE تلاش میکند هر نویسهای را که درون قلابها نیست پیدا کند. برای گنجاندن خودِ -، آن را به عنوان آخرین یا نخستین نویسه (احتمالاً پس از ^) قرار دهید.
- •
- \\
با یک نویسهٔ \ منفرد مطابقت مییابد.
- •
- \n
این توالی نویسهٔ ویژهٔ پایان خط یا شکست خط (line-break) را مییابد.
همچنین میتوان تعدادی توالی نویسهای ویژه را در رشتهٔ جایگزینی قرار داد:
- •
- \&
این توالی با متنی که با رشتهٔ جستجو مطابقت پیدا کرده است جایگزین میشود. برای مثال، اگر رشتهٔ جستجو \\*\\ باشد که با کلمات مطابقت دارد، و شما "\&" را بدهید، JOE علامتهای نقلقول را اطراف کلمات قرار خواهد داد. \1 - \9
اینها با متنی که با Nامین گروهبندی مطابقت یافته است جایگزین میشوند؛ یعنی متن داخل Nامین مجموعه از \( \).
- •
- \l, \u
نویسه بعدی متن جایگزینی را به حروف کوچک یا بزرگ تبدیل میکند.
- •
- \L, \U
تمام متن جایگزینی بعدی را به حروف کوچک یا بزرگ تبدیل میکند. تبدیل با رسیدن به \E متوقف میشود.
- •
- \\
اگر نیاز دارید یک \ در رشته جایگزینی قرار دهید، از این استفاده کنید.
- •
- \n
اگر نیاز دارید یک شکست خط در رشته جایگزینی قرار دهید، از این استفاده کنید.
چند مثال:
فرض کنید فهرستی از نشانیها دارید که هر کدام در یک خط جداگانه قرار دارند، با "Address:" شروع میشوند و اجزای آنها با کاما از یکدیگر جدا شدهاند. مانند زیر:
Address: S. Holmes, 221b Baker St., London, England
اگر بخواهید این فهرست را بازآرایی کنید تا ابتدا کشور، سپس شهر، سپس نام شخص، و در نهایت نشانی قرار گیرد، میتوانید این کار را انجام دهید:
کلیدهای ^K F را برای شروع جستجو فشار دهید، و بنویسید:
Address:\(\.\*\),\(\.\*\),\(\.\*\),\(\.\*\)\$
تا با "Address:"، چهار بخشِ جداشده با کاما، و سپس پایان خط مطابقت پیدا کند. وقتی گزینهها درخواست شد، r را برای جایگزینی رشته تایپ کنید و سپس بنویسید:
Address:\4,\3,\1,\2
تا اطلاعات را آنطور که میخواهید جابهجا کند. پس از فشردن کلید return، جستجو آغاز میشود و خط نمونه به این شکل تغییر خواهد کرد:
Address: England, London, S. Holmes, 221b Baker St.
توالیهای گریز (Escape sequences)
ویرایشگر JOE توالیهای گریز زیر را در رشتههای جستجو و جایگزینی درک میکند:
- •
- \x{10ffff}
این با یک نقطه کد (code point) یونیکدِ مشخص که در مبنای شانزده داده شده مطابقت مییابد.
- •
- \xFF
این با نویسهای خاص که در مبنای شانزده مشخص شده مطابقت مییابد.
- •
- \377
این با نویسهای خاص که در مبنای هشت مشخص شده مطابقت مییابد.
- •
- \p{Ll}
این با هر نویسهای در رده یا بلوک یونیکد نامبرده مطابقت مییابد.
نامهای بلوک، مانند "Latin-1 Supplement" یا "Arabic" را میتوان در اینجا یافت:
بلوکهای یونیکد ftp://ftp.unicode.org/Public/8.0.0/ucd/Blocks.txt
نامهای رده مانند "Ll" را میتوان در اینجا یافت:
ردههای یونیکد ftp://ftp.unicode.org/Public/5.1.0/ucd/UCD.html#General_Category_Values
توجه داشته باشید که یک تکحرف با تمام نامهای رده که با آن حرف آغاز میشوند مطابقت دارد. به عنوان مثال، \p{N} (هر عددی) شامل \p{Nd} (رقم دهدهی)، \p{Nl} (عدد حرفی) و \p{No} (سایر ارقام) میشود.
- •
- \d
این با هر رقم یونیکد مطابقت مییابد. این معادل با \p{Nd} است.
- •
- \D
این با هر چیزی به جز رقم یونیکد مطابقت مییابد. این معادل با \[^\p{Nd}] است.
- •
- \w
این با هر نویسه کلمهای مطابقت مییابد. این معادل با \[^\p{C}\p{P}\p{Z}] است.
- •
- \W
این با هر چیزی به جز یک نویسه کلمهای مطابقت مییابد. این معادل با \[\p{C}\p{P}\p{Z}] است.
- •
- \s
این با هر نویسه فاصلهای مطابقت دارد. این معادل با \[\t\r\f\n\p{Z}] است.
- •
- \S
این با هر چیزی به جز یک نویسه فاصله مطابقت دارد. این معادل با \[^\t\r\f\n\p{Z}] است.
- •
- \i
این با یک نویسه آغازگر شناسه مطابقت دارد. این معادل با \[\p{L}\p{Pc}\p{Nl}] است.
- •
- \I
این با هر چیزی به جز یک نویسه آغازگر شناسه مطابقت دارد. این معادل با \[^\p{L}\p{Pc}\p{Nl}] است.
- •
- \c
این با یک نویسه ادامهدهنده شناسه مطابقت دارد. این معادل با \[\i\p{Mn}\p{Mc}\p{Nd}\x{200c}\x{200d}] است.
- •
- \C
این با هر چیزی به جز یک نویسه ادامهدهنده شناسه مطابقت دارد. این معادل با \[^\i\p{Mn}\p{Mc}\p{Nd}\x{200c}\x{200d}] است.
- \t تب (Tab)
- \n خط جدید (Newline)
- \r بازگشت به ابتدای سطر (Carriage return)
- \b پسبر (Backspace)
- \a هشدار (Alert)
- \f تعویض صفحه (Formfeed)
- \e فرار (Escape)
- \\ بکاسلش (Backslash)
جستجوی افزایشی (Incremental search)
برای شروع جستجوی افزایشی رو به جلو از Esc S، یا برای شروع جستجوی افزایشی رو به عقب از Esc R استفاده کنید. همزمان با تایپ رشته جستجو، مکاننما به نخستین متنی که با عبارت باقاعده واردشده تا آن لحظه تطابق داشته باشد، خواهد پرید.
کلیدهای Esc S یا Esc R را دوباره فشار دهید تا رخداد بعدی متن پیدا شود یا جهت جستجو تغییر کند.
کلیدهای ^S، ^\ و ^L اثری مشابه با Esc S دارند. ^R اثری مشابه با Esc R دارد. این کلیدها برای پشتیبانی از JMACS در نظر گرفته شدهاند.
برای لغو آخرین عملِ جستجوی افزایشی، کلید Backspace را فشار دهید. آخرین عمل میتواند تکرار جستجوی پیشین یا وارد کردن یک نویسه جدید باشد.
برای درج نویسههای کنترلی در متن جستجو، از ^Q استفاده کنید. پیشتر، از ` نیز میشد برای این کار استفاده کرد.
برای خروج از جستجوی افزایشی، هر کلید دیگری را فشار دهید.
رفتن به جداکننده متناظر (Goto matching delimiter)
برای پرش بین جداکنندههای متناظر، کلید ^G را بزنید. این ویژگی هم روی جداکنندههای نویسهای (مانند ´(´ و ´)´) و هم روی جداکنندههای کلمهای برای زبانهایی مانند Pascal و Verilog که از "begin" و "end" برای جداسازی بلوکها استفاده میکنند، کار میکند. همچنین برای تطبیق برچسبهای آغاز و پایان در XML کاربرد دارد. اگر کلمهای شناختهشده نباشد، ^G جستجویی را با انتقال آن کلمه به اعلان جستجو آغاز میکند.
برای کارکرد ^G روی جداکنندههای کلمهای، مکاننما باید روی نخستین حرف کلمه قرار گرفته باشد. بنابراین در XML، اگر مکاننما روی < در <foo> باشد، به > خواهد پرید. اما اگر روی ´f´ باشد، به </foo> متناظر خواهد پرید. بههمین ترتیب، در C، کلید ^G بین #if، #else و #endif جابهجا خواهد شد، اما لازم است مکاننما را روی حرف قرار دهید، نه روی ´#´.
کلید ^G آنقدر هوشمند است که از جداکنندههای موجود در بخشهای درون نقلقول یا کامنتها صرفنظر کند. شما باید به JOE اعلام کنید که زبان شما این موارد را چگونه مشخص میکند: برای نمونههایی از نحوه انجام این کار، فایل ftyperc را ببینید.
تعدادی گزینه وجود دارد که رفتار ^G را کنترل میکنند. این گزینهها مشخص میکنند که ^G از چه نوع کامنتهایی میتواند رد شود:
- c_comment
- cpp_comment
- pount_comment
- semi_comment
- vhdl_comment
این گزینهها تعیین میکنند که ^G از چه نوع رشتههایی میتواند صرفنظر کند:
- single_quoted
- double_quoted
این گزینه به یک فایل نحو (syntax) نشانهگذاریشده امکان میدهد مشخص کند چه متنی میتواند به عنوان کامنت یا رشته در نظر گرفته شود تا ^G از آن رد شود:
- •
- highlighter_context
این گزینه استفاده از فایلهای نحو را برای شناسایی کامنتها و رشتههایی که باید هنگام تطبیق ^G نادیده گرفته شوند، فعال میکند. وضعیتهای فایل نحو باید با کلمات کلیدی string و comment نشانهگذاری شوند تا این ویژگی کار کند.
- •
- text_delimiters
این گزینه فهرستی از جداکنندههای کلمهای را برای تطابق فراهم میکند. برای نمونه، "begin=end:if=elif=else=endif" بدان معناست که ^G بین if، elif، else و endif متناظر میپرد. همچنین بین begin و end نیز جابهجا خواهد شد.
کلید ^G دارای یک جدول داخلی برای مطابقت دادن جداکنندههای نویسهای است؛ میداند که ( با ) جفت میشود.
کلید ^G دارای یک تجزیهکننده داخلی برای مدیریت تطابق برچسبهای آغاز/پایان در XML است.
اگر
میخواهید
بخش خاصی از
متن را
جابهجا،
کپی، ذخیره
یا حذف
کنید،
میتوانید
این کار را
با
بلوکهای
مشخصشده
(هایلایتشده)
انجام دهید.
ابتدا
مکاننما
را به
ابتدای
بخشی از متن
که
میخواهید
روی آن کار
کنید برده و
^K B را فشار
دهید. سپس
مکاننما
را به
نویسهٔ
بلافاصله
پس از
انتهای
متنی که
میخواهید
تغییر کند
ببرید و ^K K
را فشار
دهید. متن
بین ^K B و ^K K
باید مشخص
(هایلایت)
شود. اکنون
میتوانید
مکاننما
را به جای
دیگری در
سند خود
ببرید و
برای
انتقال متن
مشخصشده
به آنجا، ^K M
را فشار
دهید.
میتوانید
با فشردن ^K C
یک رونوشت
از متن
مشخصشده
تهیه کرده و
آن را در محل
قرارگیری
مکاننما
درج کنید.
دستور ^K Y
متن
مشخصشده
را حذف
میکند.
دستور ^K W
متن
مشخصشده
را در یک
فایل
مینویسد.
یک دستور بسیار مفید ^K / است که یک بلوک متن را از طریق یک دستور UNIX فیلتر میکند. برای نمونه، اگر فهرستی از واژهها را با ^K B و ^K K انتخاب کرده و سپس ^K / sort را تایپ کنید، فهرست واژهها مرتبسازی خواهد شد. دستور مفید دیگر UNIX برای ^K /، دستور tr است. اگر ^K / tr a-z A-Z را تایپ کنید، تمام حروف موجود در بلوک مشخصشده به حروف بزرگ تبدیل خواهند شد.
چگونه انتخاب یک ناحیهٔ مشخصشده را لغو کنیم؟
پس از پایان کار با عملیاتهای یک ناحیه، اگر وجود هایلایت برایتان مهم نیست میتوانید آن را روشن رها کنید (اما مواظب باشید تصادفاً ^K Y را نزنید). با این حال اگر این موضوع واقعاً شما را آزار میدهد، کافی است ^K B ^K K را بزنید تا مشخصسازی خاموش شود.
از نسخهٔ JOE 4.2 به بعد، میتوانید برای لغو انتخاب ناحیه، ^C را بزنید.
روشهای جدید برای انتخاب ناحیهها
روش سنتی این است که در ابتدا ^K B و در انتها ^K K را بزنید. این کلیدها نشانگرهایی به نامهای markb و markk را تنظیم میکنند. پس از تنظیم آنها، میتوانید با Esc B به markb و با Esc K به markk پرش کنید.
روش جدید: کلیدهای Ctrl-Right Arrow را برای شروع انتخاب به سمت راست بزنید. با هر بار فشردن Ctrl-Right Arrow، بلوک یک نویسه بیشتر به سمت راست گسترش مییابد. این کار از یک ماکروی ساده استفاده میکند: "begin_marking,rtarw,toggle_marking".
متأسفانه روش استانداردی برای دریافت توالی کلیدی که شبیهساز ترمینال هنگام فشردن Ctrl-Right Arrow ارسال میکند وجود ندارد. در عوض باید خودتان این توالی را مشخص کرده و آن را مستقیماً در فایل joerc وارد کنید. مثالهایی برای Xterm و gnome-terminal ارائه شده است. در JOE، کلیدهای ^Q Ctrl-Right Arrow را بزنید تا توالی روی صفحهٔ نمایش شما نشان داده شود. توجه داشته باشید که Putty از Esc Esc [ C استفاده میکند که با ^Q Right Arrow ظاهر نخواهد شد (همچنین Esc Esc دستور تنظیم نشانک است، بنابراین برای انجام این کار در Putty باید انتساب کلید آن را لغو کنید).
همچنین اگر توالی این کلیدها مشخص باشد، میتوانید کلید Ctrl-Delete را برای برش (Cut) و Ctrl-Insert را برای چسباندن (Paste) بزنید.
در صورت فعال بودن پشتیبانی از ماوس در JOE، از ماوس نیز میتوان برای انتخاب متن استفاده کرد.
تورفتگی بلوکهای برنامه (Indenting program blocks)
حالت تورفتگی خودکار با دستور ^T I تغییر وضعیت میدهد. فایل joerc معمولاً به گونهای تنظیم شده است که برای فایلهایی با نامهای منتهی به .p، .c یا .h، حالت تورفتگی خودکار فعال باشد. هنگامی که حالت تورفتگی خودکار فعال باشد و کلید Enter را بزنید، مکاننما در همان ستونی قرار میگیرد که نخستین نویسهٔ غیرفاصلهای در خط اصلی قرار داشت.
میتوانید از دستورهای ^K , و ^K . برای شیفت دادن یک بلوک متن به چپ یا راست استفاده کنید. اگر هنگام اجرای این دستورها هیچ هایلایتی تنظیم نشده باشد، بلوک برنامه (همانطور که با تورفتگی مشخص شده است) که مکاننما در آن قرار دارد انتخاب میشود و با دستورهای بعدی ^K , و ^K . جابهجا خواهد شد.
تعداد ستونهایی که این دستورها شیفت میدهند و نویسهٔ مورد استفاده برای شیفت دادن را میتوان از طریق گزینههای istep و indentc تنظیم کرد. این گزینهها در منوی ^T در دسترس هستند. همچنین، از ^T = میتوان برای انتخاب سریع از میان چند مقدار متداول برای گام و نویسهٔ تورفتگی استفاده کرد.
ویرایشگر JOE چندین گزینهٔ اضافی مربوط به ایجاد تورفتگی در برنامهها دارد:
- smartbacks
فعالسازی پسبر (backspace) و تب هوشمند. هنگامی که این حالت تنظیم باشد، کلیدهای Backspace و Tab بر اساس مقادیر گزینههای istep و indentc، تورفتگی را اعمال یا حذف میکنند. - smarthome
کلیدهای Home و ^A ابتدا مکاننما را به ابتدای خط میبرند، سپس اگر دوباره فشرده شوند، به نخستین نویسهٔ غیرخالی منتقل میکنند. - indentfirst
کلید خانگی هوشمند (Smart home) بهجای اینکه ابتدا به ابتدای خط برود، نخست به اولین نویسهٔ غیرخالی میرود. - purify
اصلاح تورفتگی در صورت نیاز، پیش از شیفت دادن یا پسبر هوشمند. برای نمونه، اگر در تورفتگی از ترکیبی از تبها و فاصلهها استفاده شده باشد و indentc روی فاصله تنظیم شده باشد، پیش از عملیات شیفت دادن، تمام تورفتگی به فاصله تبدیل خواهد شد. - guess_indent
هنگامی که این گزینه فعال باشد، JOE تلاش میکند نویسه و گام تورفتگی را بر اساس محتویات فایل حدس بزند. الگوریتم بدین صورت است که بزرگترین مقسومعلیه مشترک سه تورفتگی رایجتر در فایل را پیدا میکند.
حالت مستطیلی (Rectangle mode)
کلیدهای ^T X را بزنید تا ^K B و ^K K بهجای بلوکهای جریانی متنی، بلوکهای مستطیلی را انتخاب کنند. این حالت با عنوان حالت ستونی (columnar mode) نیز شناخته میشود. این حالت برای جابهجایی، کپی، حذف یا ذخیرهٔ ستونهای متن مفید است. همچنین میتوانید ستونهای متن را با دستور ^K / فیلتر کنید - برای نمونه اگر بخواهید یک ستون را مرتب کنید. دستور درج فایل، یعنی ^K R نیز تحت تأثیر این حالت قرار میگیرد.
هنگامی که حالت مستطیلی انتخاب میشود، حالت رونویسی (overtype mode) نیز مفید است (^T T). با انتخاب حالت رونویسی، مستطیلها بهجای درج شدن پیش از متن موجود، جایگزین آن میشوند. همچنین دستور حذف بلوک (^K Y) بهجای حذف کردن مستطیل انتخابشده، آن را با Spaces و Tabs خالی (پاک) میکند. حالت رونویسی بهویژه برای دستور فیلتر کردن بلوک (^K /) بسیار سودمند است، زیرا عرض اولیهٔ ستون انتخابشده را حفظ میکند.
حالت تصویر (Picture mode)
از ^T P برای ورود به حالت تصویر یا خروج از آن استفاده کنید. حالت تصویر در ترسیم اشکال ASCII کمک میکند.
حالت تصویر نحوهٔ مدیریت مواردی را توسط JOE کنترل میکند که در آن مکاننما فراتر از انتهای خطوط قرار دارد. این وضعیت زمانی رخ میدهد که از کلیدهای جهتنمای بالا یا پایین برای انتقال مکاننما از انتهای یک خط بلند به یک خط کوتاه استفاده میکنید.
اگر در این حالت تلاش کنید نویسهای تایپ کنید:
اگر حالت تصویر خاموش باشد، مکاننما به انتهای خط میپرد و نویسه را در آنجا درج میکند.
اگر حالت تصویر روشن باشد، خط با نویسههای فاصله پر میشود تا نویسه بتواند در موقعیت مکاننما درج شود.
پنجرهها (Windows)
شما میتوانید بیش از یک فایل را بهطور همزمان ویرایش کنید یا دو یا چند بخش مختلف از یک فایل یکسان را ویرایش نمایید. برای این کار، ^K O را بزنید تا صفحه به دو پنجره تقسیم شود. از ^K P یا ^K N برای انتقال مکاننما به پنجرهٔ بالایی یا پنجرهٔ پایینی استفاده کنید. از ^K E برای ویرایش یک فایل جدید در یکی از پنجرهها بهره بگیرید. هنگامی که فایل را با ^K X ذخیره کنید یا با ^C آن را لغو نمایید، پنجره بسته خواهد شد. اگر فایلی را که در دو پنجره باز است لغو کنید، یکی از پنجرهها بسته میشود نه خود فایل.
میتوانید ^K O را درون یک پنجره بزنید تا پنجرههای بیشتری ایجاد شوند. اگر پنجرههای زیادی روی صفحه دارید، اما نمیخواهید آنها را ببندید، میتوانید ^K I را بزنید. این کار فقط پنجرهای را که مکاننما در آن قرار دارد نمایش میدهد؛ یا اگر در ابتدا فقط یک پنجره روی صفحه بود، تلاش میکند تا تمام پنجرههای پنهانشده را در صفحه جا دهد. اگر تعداد پنجرهها بیش از گنجایش صفحه باشد، میتوانید روی پایینترین پنجره ^K N یا روی بالاترین پنجره ^K P را بزنید تا به آنها دسترسی پیدا کنید.
اگر در خط فرمان بیش از یک نام فایل به JOE داده باشید، هر فایل در پنجرهٔ متفاوتی قرار خواهد گرفت.
میتوانید ارتفاع پنجرهها را با دستورهای ^K G و ^K T تغییر دهید. ویرایشگر JOE مدل نامعمولی برای سامانهی پنجرهبندی خود دارد. اساساً شما حلقهای از پنجرهها در اختیار دارید، اما ممکن است تنها بخشی از این حلقه روی صفحه جا شود. پنجرههایی که روی صفحه نیستند همچنان وجود دارند، فقط به بیرون پیمایش شدهاند. هنگامی که در پایینترین پنجرهی صفحه کلیدهای ^K N را فشار میدهید، پنجرههای بیشتری را از حلقه به روی صفحه میآورد و احتمالاً باعث میشود پنجرهی بالایی از دید خارج شود.
ویرایشگر JOE بومی تلاش میکند هر بافر بارگذاریشده را در یک پنجره نگه دارد تا کاربران بتوانند با پیمایش در میان پنجرهها، همهی بافرها را پیدا کنند. دستور explode (^K I) یا تمام پنجرهها را به اندازهی کل صفحه گسترش میدهد تا تنها یک پنجره در صفحه جا شود، یا همهی آنها را تا جای ممکن کوچک میکند تا تعداد زیادی پنجره در صفحه جای گیرند.
از سوی دیگر، JOE از بافرهای «یتیم» (orphan) پشتیبانی میکند - فایلهایی که در ویرایشگر بارگذاری شدهاند، اما در هیچ پنجرهای قرار ندارند. ^C معمولاً یک پنجره را میبندد و بافری را که درون آن بود دور میاندازد. اگر روی آخرین پنجرهی باقیمانده ^C را بزنید، معمولاً از ویرایشگر خارج میشود. با این حال، اگر بافرهای یتیم وجود داشته باشند، ^C در عوض آنها را در این پنجرهی نهایی بارگذاری میکند تا به شما فرصت دهد صریحاً آنها را دور بیندازید. اگر گزینهی orphan در خط فرمان داده شود، مانند joe -orphan *.c، آنگاه JOE تنها نخستین فایل را در یک پنجره بارگذاری کرده و تمام فایلهای دیگر را به عنوان بافر یتیم رها میکند.
همچنین orphan کنترل میکند که آیا دستور ویرایش ^K E یک پنجرهی جدید برای فایل تازه بارگذاریشده ایجاد کند، یا پنجرهی فعلی را دوباره استفاده کند (و بافر قبلی آن را یتیم سازد).
دستور bufed نام بافری را برای جابهجایی به درون یک پنجره درخواست میکند. فهرست تکمیل خودکار آن تمام بافرها، از جمله بافرهای یتیم و بافرهایی که در پنجرههای دیگر ظاهر شدهاند را نشان میدهد. کلیدهای Esc V و Esc U (دستورهای nbuf و pbuf) به شما اجازه میدهند درون یک پنجرهی واحد در میان تمام بافرها به صورت چرخشی پیمایش کنید.
پنجرهها پشتهای از بافرهای مقیم را نگهداری میکنند تا از قابلیت پنجرهی پوستهی (shell) بالاپر پشتیبانی شود. هنگامی که یک پنجرهی بالاپر بسته میشود، بافر قبلی به پنجره بازگردانده میشود.
بافرهای موقت (Scratch buffers)
بافرهای چرکنویس (scratch) بافرهایی هستند که JOE تلاشی برای نگهداری یا حفظ آنها نمیکند. ویرایشگر JOE برای ذخیرهی بافرهای چرکنویس تغییریافته سؤالی نمیپرسد. پنجرههای پوستهی بالاپر، گزارش راهاندازی (startup log) و پنجرههای پیام compile و grep همگی بافرهای چرکنویس هستند. میتوانید با دستور scratch بافر چرکنویس خود را بسازید.
دستورهای زیر بافرهای چرکنویس را بارگذاری میکنند:
- showlog نمایش گزارش راهاندازی
- mwind نمایش پنجرهی پیام (پیامهای compile / grep از دستورهای Esc C و Esc G).
ماکروهای صفحهکلید (Keyboard macros)
ماکروها به شما اجازه میدهند زنجیرهای از کلیدهای فشردهشده را ضبط کرده و آنها را با فشردن دو کلید بازپخش کنید. این قابلیت برای خودکارسازی کارهای تکراری مفید است. برای شروع ضبط ماکرو، ^K [ را به همراه عددی از 0 تا 9 فشار دهید. خط وضعیت عبارت (Macro n recording...) را نمایش خواهد داد. اکنون، رشتهکلیدهایی را که میخواهید تکرار شوند تایپ کنید. دستورهایی که وارد میکنید اثر معمول خود را خواهند داشت. برای متوقف کردن ضبط ماکرو ^K ] را بزنید. برای اجرای یک دور از کلیدهای ضبطشده، ^K را به همراه شمارهای که ماکرو را در آن ضبط کردهاید فشار دهید.
برای نمونه، اگر میخواهید عبارت «**» را در ابتدای تعدادی از خطوط قرار دهید، میتوانید تایپ کنید:
^K [ 0 ^A **down arrow\ ^K ]
که ضبط ماکرو را آغاز میکند، مکاننما را به ابتدای خط میبرد، «**» را درج میکند، مکاننما را یک خط به پایین میبرد و سپس ضبط را پایان میدهد. از آنجا که کلیدهای لازم برای قرار دادن مکاننما در خط بعدی را در ماکرو گنجاندیم، میتوانیم بارها و بارها از این ماکرو بدون نیاز به حرکت دستی مکاننما استفاده کنیم؛ نکتهای که همواره هنگام ضبط ماکرو باید به یاد داشته باشید.
زیرروالهای ماکروی صفحهکلید (Keyboard macro subroutines)
اگر متوجه شدید ماکرویی که در حال ضبط آن هستید خود دارای مجموعهای تکراری از کلیدها است، تا زمانی که از شمارهی ماکروی متفاوتی استفاده کنید، میتوانید یک ماکرو درون ماکروی دیگر ضبط نمایید. همچنین میتوانید ماکروهایی را که پیشتر ضبط شدهاند از درون ماکروهای جدید اجرا کنید.
تعلیق برای پرسوجو (Query suspend)
اگر ماکروی شما شامل درخواستی برای ورودی کاربر است، و میخواهید کاربر هر بار با اجرای ماکرو آن ورودی را وارد کند، در نقطهای از ضبط ماکرو که نیاز به اقدام کاربر است کلیدهای ^K ? را فشار دهید. ورودی صفحهکلید در این نقطه ضبط نخواهد شد. هنگامی که کاربر ورودی اعلان را تکمیل کند، ضبط ماکرو ادامه مییابد.
هنگام اجرای ماکرو، پخشکنندهی ماکرو در نقطهای که ^K ? وارد شده بود مکث میکند تا اجازهی ورود اطلاعات توسط کاربر را بدهد. هنگامی که کاربر اعلان را کامل کرد، پخشکننده باقیماندهی ماکرو را ادامه میدهد.
تکرار (Repeat)
میتوانید از دستور تکرار، ^K \، برای تکرار یک ماکرو یا هر دستور ویرایشی دیگر یا حتی یک نویسهی معمولی، به تعداد دفعات مشخص استفاده کنید. ^K \ را بزنید، تعداد دفعاتی که میخواهید دستور تکرار شود را وارد کرده و Enter را بفشارید. دستور ویرایشی بعدی که وارد میکنید به همان تعداد بار تکرار خواهد شد. برای نمونه، جهت حذف ۲۰ خط بعدی متن، تایپ کنید:
^K \ 20return^Y
ماکروها و دستورها (Macros and commands)
ماکرو فهرستی از دستورها است که با ویرگول از هم جدا شدهاند. هنگامی که ماکرو اجرا میشود، هر دستور تا رسیدن به انتهای فهرست یا تا زمانی که یکی از دستورها شکست بخورد (مقدار بازگشتی غیرصفر از دستور)، اجرا میشود. اگر بوقها را فعال کرده باشید (^T B)، دستورهای ناموفق صدای بوق تولید میکنند.
کلیدهای Esc D را بزنید تا مجموعهی فعلی ماکروهای صفحهکلید به عنوان متن در بافر جاری درج شوند. برای نمونه، ماکروی درج «**» که در بالا ذکر شد، به این شکل است:
-
home,"**",dnarw ^K 0 Macro 0
میتوانید این را در فایل .joerc خود درج کرده و توالی کلید (یعنی K 0) را به موردی پایدارتر تغییر دهید.
تعریف توسط کاربر (Define your own)
میتوانید ماکروها را به توالیهای کلید متصل کنید یا ماکروهای نامگذاریشدهی خود را در فایل joerc تعریف نمایید. برای نمونه، دستور زیر یک ماکرو به نام foo تعریف میکند:
-
:def foo eof,bol
دستور foo مکاننما را در ابتدای آخرین خط فایل قرار میدهد. eof به انتهای فایل میپرد. bol به ابتدای یک خط میپرد. زمانی که یک ماکرو به این شیوه نامگذاری شد، در فهرست تکمیل خودکار اعلان دستور Esc X نشان داده خواهد شد.
خط فرمان (Command prompt)
میتوانید یک ماکرو را با تایپ مستقیم آن در خط فرمان اجرا کنید. کلیدهای Esc X را فشار دهید تا خط فرمان نمایان شود. در این اعلان، کلید Tab را برای دیدن فهرست تکمیل خودکار تمامی دستورهای موجود فشار دهید.
در اینجا فهرست کاملی از دستورها آورده شده است.
تغییردهندهی عدم توقف ماکرو (Macro don´t stop modifier)
گاهی اوقات انتظار دارید دستورها گاهی شکست بخورند، اما میخواهید باقی دستورهای فهرست در هر صورت اجرا شوند. برای علامتگذاری دستوری که مجاز به شکست است، پسوند ´!´ را به آن اضافه کنید. برای نمونه، در اینجا ماکرویی آورده شده است که در پنجرهی بالایی صفحه را به پایین پیمایش میکند:
-
prevw,pgdn!,nextw
اگر prevw شکست بخورد، ماکرو طبق معمول متوقف میشود. اما حتی اگر pgdn شکست بخورد (برای نمونه اگر از پیش در انتهای بافر باشید)، nextw اجرا خواهد شد تا مکاننما به پنجرهی اصلی بازگردد.
تغییردهندههای آرگومان تکرار ماکرو (Macro repeat argument modifiers)
آرگومانهای تکرار را میتوان با ^K \ مشخص کرد. هنگامی که یک دستور با آرگومان تکرار اجرا میشود، به تعداد دفعات مشخصشده تکرار خواهد شد. اگر آرگومان تکرار منفی باشد، دستور معکوس آن (در صورت وجود) به جای آن اجرا میشود. برای نمونه، اگر «rtarw» را ۳- بار تکرار کنید، «ltarw» ۳ بار تکرار خواهد شد. اگر یک آرگومان منفی برای دستوری داده شود که معکوسی ندارد، آرگومان تکرار نادیده گرفته میشود.
بهطور معمول، اگر یک آرگومان تکرار برای یک ماکرو مشخص شود، ماکرو صرفاً به تعداد دفعات مشخصشده تکرار میشود. اگر یک آرگومان منفی داده شود، آرگومان نادیده گرفته میشود.
گاهی میخواهید آرگومانهای منفی را برای ماکروها مجاز کنید و رفتار آنها تغییر یابد. برای این کار، به انتهای هر دستوری در ماکرو که باید با آرگومان منفی به معکوس خود تبدیل شود، پسوند ´-´ اضافه کنید. برای نمونه، ماکروی پایین بردن صفحه در پنجرهی دیگر اینگونه است:
-
prevw,pgdn-!,nextw
حال اگر این ماکرو را با آرگومان ۲- اجرا کنید، دو بار تکرار خواهد شد، اما به جای pgdn دستور pgup اجرا میشود. (توجه داشته باشید که میتوان چندین تغییردهندهی پسوندی را پس از هر دستور قرار داد).
گاهی وقتی یک آرگومان تکرار به ماکرو داده میشود، میخواهید تنها یکی از دستورهای فهرست تکرار شود، نه کل ماکرو. این کار را میتوان به صورت زیر مشخص کرد:
-
prevw,pgdn#!,nextw
اگر این دستور با آرگومان ۲ اجرا شود، prevw یک بار اجرا میشود، pgdn دو بار اجرا میشود، و nextw یک بار اجرا خواهد شد.
در نهایت، معناشناسیهای حتی پیچیدهتر را میتوان با دستور «if» بیان کرد:
-
if~,"arg<0",then, ltarw, else, rtarw, endif
هنگامی که ماکرو اجرا میشود، متغیر ریاضی «arg» برابر با آرگومان تکرار دادهشده قرار میگیرد. متغیر «argset» در صورتی که کاربر آرگومانی تعیین کرده باشد، حتی اگر ۱ باشد، روی true تنظیم میشود. اگر هیچ آرگومانی داده نشده باشد، مقدار argset برابر false خواهد بود.
اگر به انتهای هر دستوری در فهرست علامت ~ اضافه شود (مانند if در بالا)، ماکرو حتی در صورت وجود آرگومان تکرار نخواهد شد. با این حال، مقدار ´arg´ همچنان برابر با تعداد تکرار مشخصشده قرار میگیرد. دستور ´psh´ موقعیتهای ^K B و ^K K را در یک پشته ذخیره میکند. با اتمام ماکرو، (یا هنگامی که دستور ´pop´ فراخوانی شود) موقعیتها بازگردانده میشوند.
دستور ´query´ اجرای ماکرو را تا زمان کامل شدن کادر محاورهای جاری معلق میکند. این دستور همچنین عملیات خودکار ´pop´ را که در پایان یک ماکرو رخ میدهد به تعویق میاندازد- بنابراین اگر ماکرو با یک کادر محاوره به پایان برسد، معمولاً میخواهید ´query´ را فراخوانی کنید تا از بازیابی زودهنگام موقعیتهای ^K B و ^K K جلوگیری شود.
جستجوی برچسبها (Tags search)
اگر در حال ویرایش یک برنامهٔ بزرگ C با تعداد زیادی فایل منبع هستید، میتوانید از برنامهٔ ctags برای ایجاد یک فایل tags استفاده کنید. این فایل شامل فهرستی از نمادهای برنامه و فایلها و موقعیتهایی است که نمادها در آن تعریف شدهاند.
ابتدا فایل tags را با برنامهٔ «ctags» ایجاد کنید. برای مثال:
-
ctags *.c *.h
این کار فایلی به نام «tags» در دایرکتوری جاری ایجاد خواهد کرد.
برنامهٔ JOE به دنبال فایل «tags» در دایرکتوری جاری میگردد. اگر چنین فایلی وجود نداشته باشد، تلاش میکند فایلی را باز کند که توسط متغیر محیطی TAGS مشخص شده است.
مسیرها در فایل tags همیشه نسبت به مکان خود فایل tags سنجیده میشوند.
فایل tags شامل فهرستی از مکانهای تعریف شناسه در یکی از این قالبها است:
-
identifier filename /search-expression/[;comments] identifier filename ?search-expression?[;comments] identifier filename line-number[;comments]
برخی نسخههای ctags نامهای کلاس را در شناسهها میگنجانند:
-
class::member
در این حالت، JOE با هر یک از این رشتهها مطابقت خواهد داد:
-
member ::member class::member
برخی نسخههای ctags نام فایل را در شناسه قرار میدهند:
-
filename:identifier
در این حالت JOE تنها زمانی شناسه را پیدا میکند که نام بافر با نام فایل تطابق داشته باشد.
عبارت search-expression یک عبارت باقاعدهٔ vi است، اما JOE تنها از نویسههای ویژهٔ زیر پشتیبانی میکند:
-
^ در ابتدا یعنی عبارت از ابتدای سطر آغاز میشود $ در انتها یعنی عبارت در انتهای سطر پایان میپذیرد \x درج علامت گریز برای x (نادیدهگرفتن معنای ویژه /، ?، ^ یا $)
کلیدهای ^K ; را بزنید تا اعلان جستجوی برچسبها نمایان شود. اگر مکاننما روی یک شناسه قرار داشته باشد، اعلان از پیش با آن شناسه پر میشود. قابلیت تکمیل با Tab در این اعلان کار میکند (از فایل tags برای یافتن موارد تکمیل استفاده میکند).
هنگامی که Enter را میزنید، جستجوی برچسبها آغاز میشود:
اگر یک و تنها یک تطابق وجود داشته باشد، JOE مستقیماً به محل تعریف پرش میکند.
اگر چندین تطابق وجود داشته باشد، رفتار برنامه توسط گزینهٔ notagsmenu کنترل میشود. اگر notagsmenu فعال باشد، JOE به اولین تعریف پرش میکند. چنانچه پیش از فشردن هر کلید دیگری دوباره ^K ; را بزنید، JOE به تعریف بعدی پرش میکند و به همین ترتیب ادامه مییابد. دستور «tagjump» نیز این عملکرد را انجام میدهد.
اگر notagsmenu غیرفعال باشد، JOE منویی از تمام تطابقها را نمایش میدهد. شما مورد دلخواه خود را انتخاب میکنید و JOE به آن میپرد. اگر پیش از فشردن کلید دیگری دوباره ^K ; را بزنید، همان منو دوباره نمایان میشود در حالی که مکاننما در موقعیت اصلی خود باقی مانده است.
میتوانید ^K - را بزنید تا مکاننما به مکان اصلی پیش از جستجوی برچسبها بازگردد (اغلب ^C نیز کارساز خواهد بود).
از آنجا که ^K ; فایل تعریف را در پنجرهٔ جاری بارگذاری میکند، احتمالاً ابتدا میخواهید پنجره را با ^K O تقسیم کنید تا هم فایل اصلی و هم فایل تعریف بارگذاری شده باشند. ویرایشگر JOE دارای یک ماشینحساب داخلی است که میتوان آن را با Esc M فراخوانی کرد.
توابع ریاضی (Math functions)
sin, cos, tan, exp, sqrt, cbrt, ln, log, asin, acos, atan, sinh, cosh, tanh, asinh, acosh, atanh, int, floor, ceil, abs, erf, erfc, j0, j1, y0, y1
متغیرها (Variables)
- e
تنظیمشده بر روی ´e´ - pi
تنظیمشده بر روی ´pi´ - top
تنظیمشده بر روی شماره خط بالای پنجره - lines
تنظیمشده بر روی تعداد خطوط فایل - line
تنظیمشده بر روی شماره خط فعلی - col
تنظیمشده بر روی شماره ستون فعلی - byte
تنظیمشده بر روی شماره بایت فعلی - size
تنظیمشده بر روی اندازه بافر - height
تنظیمشده بر روی ارتفاع پنجره - width
تنظیمشده بر روی عرض پنجره - char
تنظیمشده بر روی مقدار ASCII نویسه زیر مکاننما - markv
درست (True) در صورتی که یک بلوک معتبر تعیین شده باشد (^KB ... ^KK) - rdonly
درست (True) در صورتی که فایل فقطخواندنی باشد - arg
آرگومان تکرار فعلی - argset
درست (True) در صورتی که آرگومان تکرار مشخص شده باشد - is_shell
درست (True) در صورتی که در یک پنجره پوسته فعال اجرا شده باشد - no_windows
تعداد پنجرههای بافر روی صفحه نمایش - ans
نتیجه عبارت قبلی
- hex
حالت نمایش هگزادسیمال (Hex) - dec
حالت نمایش دهدهی (Decimal) - ins
درج ´ans´ در بافر - sum
مجموع اعداد در بلوک - cnt
شمارش اعداد در بلوک - avg
میانگین مقادیر اعداد در بلوک - dev
انحراف معیار اعداد در بلوک - eval
ارزیابی عبارتهای ریاضی در بلوک (یا کل فایل اگر بلوکی تعیین نشده باشد). - joe(...)
اجرای یک ماکروی JOE (آرگومان در همان قالب ماکروهای فایل joerc است). مقدار بازگشتی ماکروی JOE برگردانده میشود (برای موفقیت ماکرو، مقدار true (غیرصفر) بازگردانده میشود).
برای مثال:
-
joe(sys,"[ 1 == 1 ]",rtn)
عبارت ([ 1 == 1 ]) یک دستور شل است. "[" مترادفی برای دستور یونیکسی "test" است.
مقدار true را برمیگرداند.
به یاد داشته باشید: آرگومان دستور ماکروی "if" در JOE یک عبارت ریاضی است. بنابراین برای مثال، ماکروی:
-
if,"joe(sys,\"[ 1 == 1 ]\",rtn)",then,"TRUE",endif
عبارت TRUE را درون بافر تایپ میکند.
- !x
نقیض منطقی x. - x
رساندن x به توان y. - a*b
ضرب. - a/b
تقسیم. - a%b
باقیمانده. - a+b
جمع. - a-b
تفریق. - a<b
درست است اگر a کوچکتر از b باشد. - a<=b
درست است اگر a کوچکتر یا مساوی b باشد. - a>b
درست است اگر a بزرگتر از b باشد. - a>=b
درست است اگر a بزرگتر یا مساوی b باشد. - a==b
درست است اگر a برابر با b باشد. - a!=b
درست است اگر a برابر با b نباشد. - a&&b
درست است اگر هم a و هم b درست باشند. - a||b
درست است اگر a یا b درست باشد. - a?b:c
اگر a درست باشد b بازگردانده میشود، در غیر این صورت c. - a=b
انتساب b به a. - a:b
اجرای a، سپس اجرای b.
- &&، || و ? : از نظر اثرات جانبی مانند C و sh عمل میکنند: اگر
- سمت چپ && نادرست باشد، سمت راست ارزیابی نمیشود.
- جداکننده عبارت است. برای اجرای یک پوستهٔ خط فرمان در یکی از پنجرههای JOE، کلیدهای ^K ´ را بفشارید. هنگامی که مکاننما در انتهای پنجرهٔ پوسته قرار دارد (اگر نیست، از ^K V استفاده کنید)، هر آنچه تایپ کنید بهجای بافر به پوسته ارسال میشود. هرگونه خروجی از پوسته یا از دستورهای اجراشده در پوسته به انتهای پنجرهٔ پوسته افزوده میشود (اگر مکاننما در انتهای پنجرهٔ پوسته باشد، همراه این خروجی حرکت خواهد کرد). این فرمان برای ضبط نتایج دستورهای پوسته مفید است؛ برای نمونه خروجی make، نتیجهٔ جستجو با grep در مجموعهای از فایلها برای یافتن یک رشته، یا فهرست دایرکتوریها از نشستهای FTP. علاوه بر نویسههای قابل تایپ، کلیدهای ^C، Backspace، Del، Return و ^D نیز به پوسته ارسال میشوند. برای توقف ضبط خروجی پوسته، دستور exit را در پوسته تایپ کنید. اگر در پنجرهٔ پوسته هنگامی که مکاننما در انتهای پنجره نیست ^C را بفشارید، پوسته متوقف (kill) میشود.
اگر از Bash استفاده میکنید، میتوانید با فشردن ^Q Up Arrow و ^Q Down Arrow در بافر تاریخچهٔ Bash پیمایش کنید. کلیدهای دیگر نیز کار میکنند: ^Q ^A را برای رفتن به ابتدای سطر یا ^Q ^E را برای رفتن به انتهای سطر امتحان کنید. متأسفانه JOE تنها یک پایانهٔ ساده (dumb terminal) را شبیهسازی میکند، بنابراین برای هرگونه ویرایش فراتر از فشردن Backspace باید قوهٔ تخیل بالایی به کار ببرید.
بهطور کلی، هر نویسهای که با ^Q نقل (quote) شود به پوسته ارسال میشود.
همچنین این کلیدها به پوسته ارسال میشوند: Tab، Backspace، Enter، ^C و ^D.
پنجرههای بازشوی پوسته (Pop-up shell windows)
برای باز کردن و جابهجایی میان پنجرههای پوسته، کلیدهای F1 - F4 را بفشارید.
پنجرههای بازشوی پوسته از یک شبیهساز پایانهٔ کامل استفاده میکنند تا هنگام تایپ "man ls" قالببندی آن بهدرستی انجام شود (بهاندازهٔ کافی خوب کار میکند تا بتوان از برخی برنامههای تعاملی استفاده کرد). با این حال، پنجرهٔ پوسته همچنان یک بافر ویرایشی است.
پنجرهٔ قدیمی پوسته (بدون شبیهسازی پایانه) همچنان وجود دارد: طبق معمول از ^K ´ برای فراخوانی آن استفاده کنید. این ویژگی برای مشاهدهٔ توالیهای کنترلی صادرشده از یک برنامه مفید است.
در پنجرههای بازشوی پوسته در مقایسه با پنجرهٔ قدیمیتر، کلیدهای بیشتری به برنامهٔ در حال اجرا ارسال میشوند. یک بخش :vtshell در فایل joerc برای کنترل این کلیدها وجود دارد. بهویژه کلیدهای جهتنما و Ctrl-C به برنامه فرستاده میشوند. این بدان معناست که میتوانید بهآسانی با کلیدهای جهتنما در تاریخچهٔ bash پیمایش کنید یا برنامهها را به روش معمول با Ctrl-C متوقف سازید.
از سوی دیگر، ارسال Ctrl-C بدین معناست که روش بستن پنجره کمتر مشهود است. یک راه این است که مکاننما را از نقطهٔ ورود دادههای پوسته خارج کنید (با Ctrl-P) و سپس Ctrl-C را بزنید. راه دیگر فشردن ^K Q است. در نهایت، میتوانید دستور ´pop´ را در اعلان خط فرمان تایپ کنید.
اگر لازم است کلیدی را به پوسته بفرستید که JOE معمولاً از آن استفاده میکند، آن را نقل (quote) کنید. برای نمونه، اگر "emacs -nw" را در پنجرهٔ پوسته اجرا کنید، میتوانید با فشردن کلیدهای زیر از آن خارج شوید:
-
^Q ^X ^C
برای بازگرداندن سریع مکاننما به نقطهای که دادهها به پوسته وارد میشوند، ^K V را بفشارید.
هنگامی که یک پنجرهٔ پوسته را باز میکنید، یک اسکریپت راهاندازی ویژهٔ JOE بارگذاری (source) میشود. این فایل در /etc/joe/shell.sh (و همچنین /etc/joe/shell.csh) قرار دارد. این فایل شامل برخی نامهای مستعار (alias) است که به شما امکان میدهند JOE را با دستورهای ساختگی پوسته کنترل کنید. تا کنون این دستورها وجود دارند:
- clear
پاک کردن پنجرهٔ پوسته (حذف محتویات بافر) - joe file
ویرایش یک فایل در JOE - math 1+2
محاسبهٔ معادله با استفاده از ماشینحساب JOE - cd xyz
تغییر دایرکتوری، همگام نگهداشتن JOE با آن - markb
مشابه ^KB - markk
مشابه ^KK - mark command
اجرای دستور پوسته، علامتگذاری خروجی آن - parse command
اجرای دستور پوسته، تجزیهٔ خروجی آن برای یافتن نام فایلها و شمارهٔ سطرها (برای find یا grep) - parser comman
اجرای دستور پوسته، تجزیهٔ خروجی آن برای یافتن خطاها (برای gcc) - release
رهاسازی خطاهای تجزیهشده - pop
بستن پنجرهٔ پوسته (مشابه ^K Q)
این دستورها با ارسال یک توالی گریز (escape sequence) کار میکنند که توسط شبیهساز پایانه شناخته میشود: Esc { joe_macro }. هنگام دریافت این توالی، ماکرو اجرا میشود. برای امنیت، تنها ماکروهای تعریفشده در فایل joerc که با "shell_" آغاز میشوند را میتوان از این طریق اجرا کرد. پنجرههای بازشوی پوسته چندین مورد کاربرد سودمند دارند:
- •
- استفاده برای مرور صفحات راهنما (man)
- کلید F1 را زده و "man fopen" را تایپ کنید. هنگام مشاهده راهنما از ´b´ (´u´) و کلید فاصله برای هدایت more (یا less) استفاده کنید. میتوانید راهنما را در یک پنجره روی صفحه باز نگه دارید و همزمان در پنجرهای دیگر به ویرایش بپردازید.
- •
- استفاده برای جابهجایی میان دایرکتوریها
- کلید F1 را فشرده و با استفاده از cd به دایرکتوری مورد نظر بروید. به محض رسیدن به مسیر مناسب، کلیدهای ^K E را بزنید تا فایلی بارگذاری شود (یا درون پوسته "edit file" را تایپ کنید).
- •
- استفاده در کنار تجزیهکننده خطا برای یافتن فایلها
- کلید F1 را زده و به یک دایرکتوری بروید. برای تولید فهرستی از فایلها از grep یا find (یا هر دو) استفاده کنید:
-
parse grep -n FIXME *.c
یا:
-
markb; find . | xargs grep -n FIXME; markk; parse
(توجه داشته باشید که نمیتوانید این عبارت را به کار ببرید:
-
parse find . | xargs grep -n FIXME
...مشکل این است که تنها کلمات سمت چپ نماد pipe بهعنوان آرگومان به دستور parse ارسال میشوند).
حال با استفاده از ^P مکاننما را روی یکی از خطهای فهرست قرار دهید. کلید Esc Space را بزنید تا JOE فایل مربوطه را برای ویرایش باز کرده و به سطر مشخصشده بپرد (همچنین میتوانید از Esc - و Esc = برای پیمایش گامبهگام در فهرست استفاده کنید).
- •
- استفاده در کنار جستوجو و جایگزینی برای ویرایش چندین فایل
- هنگامی که JOE به فهرستی از فایلها (از مراحل بالا) دست یافت، از جستوجو و جایگزینی با گزینه ´e´ برای بررسی همه آنها استفاده کنید:
-
^K F Find: <text> Options: re Replace: <replacement text>
- •
- ساخت پروژه (Build)
خطاهای حاصل از فرآیند ساخت را بهسادگی با دستور زیر ضبط کنید:
-
parserr make
برای پیمایش گامبهگام در میان خطاها، کلیدهای Esc = و Esc - را بفشارید.
نحوه کارکرد..
- یک حالت جدید به نام "ansi" وجود دارد (Esc X mode ansi). هنگامی که این حالت فعال باشد، بهروزرسان صفحه توالیهای گریز (escape sequences) موجود در بافر را پنهان میکند. در غیر این صورت، توالیهای مربوط به خروجیهای رنگی دستور ´ls´ بههمریختگی بزرگی روی صفحه ایجاد میکنند.
- یک نحو (syntax) توکار جدید اضافه شده است: "ansi" (^T Y ansi). این نحو توالیهای کنترل رنگ ANSI را تجزیه میکند تا متن رنگی نمایش داده شود.
- یک شبیهساز ترمینال برای تفسیر توالیهای کنترلی دریافتشده از برنامه پوسته تعبیه شده است. این بخش با تغییر محتوای بافر ویرایش، یک ترمینال را شبیهسازی میکند.
- هنگامی که اندازه پنجره ویرایش تغییر میکند، این موضوع با ارسال فراخوان ioctl از نوع TIOCSSIZE یا TIOCSWINSZ به پوسته اعلام میشود. بدین ترتیب، برنامهای که درون پوسته اجرا میشود از اندازه دقیق پنجره مطلع میگردد.
- برنامه JOE دارای دو تجزیهکننده است که میتوان از آنها برای ایجاد فهرست خطاها (فهرستی از نام فایلها / شماره خطوط) استفاده کرد.
دستور "parserr" کل بافر یا در صورت مشخص بودن بلوک، تنها بلوک برجستهشده را به دنبال پیامهای خطای کامپایلر تجزیه میکند. پیامها باید در این قالب باشند:
-
<junk> file.name <junk> line-number <junk> : <junk>
نام فایل باید از اعداد، حروف، '/'، '.' و '-' تشکیل شده باشد. باید حداقل شامل یک '.' باشد. همچنین باید پس از شماره خط در نقطهای یک دونقطه (:) وجود داشته باشد. خطوطی که در این قالب نباشند نادیده گرفته میشوند.
دستور "gparse" کل بافر یا در صورت تنظیم بودن بلوک، فقط بلوک برجستهشده را برای یافتن فهرستی از نام فایلها یا نام فایلها به همراه شماره خط ناشی از "grep -n" ،"find" و برنامههای مشابه تجزیه میکند.
-
filename filename:<junk> filename:line-number:<junk>
هنگامی که JOE فهرست خطاها را به دست آورد، کارهای متعددی میتوانید با آن انجام دهید:
- پیمایش فایلها/مکانها در فهرست با کلیدهای Esc - و Esc =
- جستوجو و جایگزینی در تمام فایلهای موجود در فهرست با استفاده از گزینه جستوجو و جایگزینی 'e'.
- پاک کردن فهرست با استفاده از دستور "release".
همچنین میتوانید از Esc Space (دستور 'jump') برای تجزیه خطی که مکاننما روی آن قرار دارد و پرش به نام فایل و شماره خط تجزیهشده استفاده کنید. 'jump' از تجزیهکننده grep/find استفاده میکند، مگر اینکه قبلاً دستور 'parserr' در بافر اجرا شده باشد.
Grep-find
برای نمایش اعلان (prompt)، کلیدهای Esc G را فشار دهید. دستوری وارد کنید که خروجی آن نام فایلها به همراه شماره خطوط باشد؛ برای نمونه: 'grep -n fred *.c'. این کار تمام نمونههای 'fred' را در فایلهای *.c فهرست میکند. برای دریافت شماره خطوط به گزینه '-n' نیاز دارید.
اکنون میتوانید روی یکی از خطوط کلیدهای Esc Space را بزنید تا به فایل انتخابشده بپرید. همچنین میتوانید از Esc = و Esc - برای پیمایش گامبهگام خطوط استفاده کنید.
کامپایل (Compile)
کلیدهای Esc C را بزنید تا تمام فایلهای تغییریافته ذخیره شوند و اعلان کامپایل باز شود. دستوری را که میخواهید برای کامپایلر به کار ببرید وارد کنید (معمولاً "make -w"). کامپایلر در یک پنجره پوسته اجرا خواهد شد. پس از پایان، نتایج تجزیه میشوند.
پرچم '-w' باید به "make" داده شود تا هر زمان دایرکتوری را تغییر میدهد پیامی چاپ کند. پیامها در این قالب هستند:
-
make[1]: Entering directory `/home/jhallen/joe-editor-mercurial/joe´
اگر هرگونه خطا یا هشداری از طرف کامپایلر وجود داشته باشد، میتوانید روی یکی از خطوط کلیدهای Esc Space را بزنید تا به فایل انتخابشده بپرید. همچنین میتوانید از Esc = و Esc - برای پیمایش گامبهگام خطوط استفاده کنید.
برجستهسازی نحو (Syntax highlighting)
برای فعالسازی برجستهسازی از ^T H استفاده کنید.
برای انتخاب نحو، از ^T Y استفاده کنید. میتوانید در اعلان، دو بار کلید Tab را بزنید تا فهرست تکمیل خودکار نمایش داده شود.
برنامه JOE تلاش میکند نحو مورد استفاده را بر اساس نام و محتویات فایل تشخیص دهد. فایل پیکربندی /etc/joe/ftyperc شامل این تعاریف است.
هر نحو توسط فایلی واقع در /usr/share/joe/syntax/ تعریف میشود.
نحوه کارکرد برجستهسازی نحو در JOE (How JOE syntax highlighting works)
برگرفته از c.jsf http://joe-editor.hg.sourceforge.net/hgweb/joe-editor/joe-editor/file/tip/syntax/c.jsf.in با کمی تغییر
یک ماشین حالت متناهی معین که تحلیل واژگانی زبان هدف را انجام میدهد در یک فایل نحو ارائه شده است. (این در اصل «زبان اسمبلی» برجستهسازی نحو است. اصولاً میتوان از برنامهای مجزا برای تبدیل نحو عبارت منظم NFA به این قالب استفاده کرد).
هر حالت با این ساختار آغاز میشود:
-
:<name> <color-name> <context>
name\ نام حالت است.
color-name\ رنگی است که برای نویسههای مصرفشده توسط حالت استفاده میشود (در واقع نمادی برای یک رنگ قابلتعریف توسط کاربر است).
context\ به JOE میگوید که آیا نویسه فعلی بخشی از یک کامنت یا یک رشته است یا خیر. این به JOE امکان میدهد هنگام تطبیق نویسههایی مانند پرانتزها، کامنتها و رشتهها را نادیده بگیرد. برای استفاده از این قابلیت، گزینه highlighter_context باید برای فایلهایی که با نحو مربوطه برجسته میشوند اعمال شود. جهت اعمال این گزینه، آن را به مدخلهای آن فایلها در ftyperc بیفزایید.
زمینههای معتبر عبارتند از:
- comment این نویسه بخشی از یک کامنت است. مثال: /* comment */
- string این نویسه بخشی از یک رشته است. مثالها: "string" 'c' 'string'
جداکنندههای کامنت و رشته نیز خود باید با زمینه مناسب علامتگذاری شوند. زمینه بخشی از رنگ در نظر گرفته میشود، بنابراین گزینههای recolor=-N و recolormark زمینه را به نویسههای پیشین نیز اعمال میکنند.
نخستین حالتِ تعریفشده، حالت اولیه است.
درون یک حالت، انتقالها (پرشها) به حالتهای دیگر تعریف میشوند. هر پرش قالبی به این شکل دارد:
-
<character-list> <target-state-name> [<option>s]
سه روش برای تعیین character-list\ وجود دارد: استفاده از * برای هر نویسهای که مشخص نشده باشد؛ % یا & برای تطبیق با نویسه موجود در بافر تطبیق جداکننده (% دقیقاً با نویسه ذخیرهشده تطبیق مییابد، در حالی که & با نویسه متضاد آن تطبیق مییابد، برای مثال هنگام استفاده از &، نویسه ( با ) تطبیق مییابد)؛ یا فهرستی صریح از نویسهها درون گیومه (محدودهها و توالیهای گریز مجاز هستند: Escape Sequences را ببینید). هنگامی که نویسه بعدی با هر یک از موارد فهرست تطبیق یابد، پرش به target-state انجام شده و نویسه مصرف میشود (به سمت نویسه بعدی فایل برای رنگآمیزی پیش میرویم).
انتقال * باید نخستین انتقال مشخصشده در حالت باشد.
چندین گزینه وجود دارد:
- noeat - نویسه را مصرف نکن، بلکه آن را به حالت بعدی تحویل بده (این کار معمولاً حالتها را کوچکتر میکند، اما مراقب باشید: ممکن است حلقههای نامحدود ایجاد کنید). گزینه 'noeat' متضمن 'recolor=-1' است.
- recolor=-N - رنگآمیزی مجدد N نویسه پیشین با رنگ target-state. برای مثال هنگامی که /* به عنوان آغاز کامنت C تشخیص داده شد، میخواهید با recolor=-2 خودِ /* را با رنگ کامنت C رنگآمیزی کنید.
- mark - علامتگذاری ابتدای یک ناحیه با موقعیت فعلی.
- markend - علامتگذاری پایان ناحیه.
- recolormark - رنگآمیزی مجدد تمام نویسههای موجود در ناحیه علامتگذاریشده با رنگ target-state. اگر markend داده نشده باشد، تمام نویسهها تا موقعیت فعلی مجدداً رنگآمیزی میشوند. توجه داشته باشید که ناحیه علامتگذاریشده نمیتواند از مرز خطوط عبور کند و باید در همان خط recolormark باشد.
- buffer - کپیکردن نویسهها به بافر رشته را با شروع از این نویسه آغاز کن (پایان ندادن به بافرسازی با گزینههای تطبیقی 'strings'، 'istrings' یا 'hold' ایرادی ندارد - بافر به ۲۳ نویسه نخست محدود است).
- save_c - ذخیره نویسه در بافر تطبیق جداکننده.
- save_s - کپیکردن بافر رشته در بافر تطبیق جداکننده.
- strings - فهرستی از رشتهها در ادامه میآید. اگر بافر با هر یک از رشتههای ارائهشده تطبیق یابد، به جای پرش عادی، پرش به target-state مشخصشده در فهرست رشته انجام میشود.
- istrings - همانند strings است، اما بزرگی و کوچکی حروف نادیده گرفته میشود. نکته: گزینههای strings و istrings باید آخرین گزینه در خط باشند؛ زیرا هر گزینهای که بعد از آنها بیاید نادیده گرفته خواهد شد.
- hold - متوقف ساختن ذخیره رشته در بافر - گزینههای بعدی 'strings' یا 'istrings' محتویات بافر را در این نقطه بررسی خواهند کرد. برای تفکیک دستورها و فراخوانیهای توابع در برخی زبانها سودمند است؛ مثلاً 'write 7' یک دستور است و 'write (' یک فراخوانی تابع است - گزینه hold به ما اجازه میدهد روی فاصله متوقف شویم و جستوجوی رشته را تا رسیدن به ( یا 7 به تعویق بیندازیم.
قالب فهرست رشته بدین صورت است:
-
"string" <target-state> [<options>s] "string" <target-state> [<options>s] "&" <target-state> [<options>s] # matches contents of delimiter match buffer done
(تمام گزینههای بالا بهجز "strings"، "istrings" و "noeat" مجاز هستند. گزینهٔ noeat پس از یک رشتهٔ تطبیقیافته همیشه ضمنی و مفروض است).
نکتهٔ عجیب: فقط حالتها (states) دارای رنگ هستند، نه گذارها (transitions). این بدان معناست که گاهی اوقات باید حالتهای ساختگی (dummy states) ایجاد کنید با:
-
* <next-state> noeat
تنها برای اینکه مشخصات رنگ را تعیین کنید.
بافر تطبیق جداکننده (Delimiter match buffer) برای perl و shell است: یک عبارت باقاعده (regex) در perl میتواند به صورت s<..>(...) باشد و در shell میتوانید بنویسید: <<EOS ....... EOS. ایده این است که نخستین جداکننده را در بافر تطبیق ذخیره کنید (علامت < یا اولین "EOS") و سپس آن را با دومی با استفاده از "&" در یک رشته یا فهرست نویسهها تطبیق دهید.
زیرروالها (Subroutines)
ماشینهای حالت پررنگکننده (Highlighter state machines) اکنون میتوانند فراخوانیهای زیرروال انجام دهند. این قابلیت از طریق نمونهسازی الگو (template instantiation) کار میکند: ماشین حالت فراخوانیشده در ماشین حالت فعلی شما گنجانده میشود، اما به گونهای تغییر مییابد که نشانی بازگشت به فراخوانده اشاره کند. هنوز هیچ پشتهای در زمان اجرا (run-time stack) وجود ندارد (حالت به صورت یک عدد صحیح تکی به همراه رشتهٔ جداکنندهٔ ذخیرهشده نمایش داده میشود).
فراخوانی بازگشتی (Recursion) مجاز است، اما بهطور خودکار به ۵ سطح محدود شده است.
نکته: این محدودیت بازگشت منسوخ شده است. زیرروالها اکنون از یک پشته استفاده میکنند، بنابراین عمق فراخوانی نامحدود است.
برای فراخوانی یک زیرروال، از گزینهٔ ´call´ استفاده کنید:
-
"\"" fred call=string(dquote)
زیرروال موسوم به ´string´ فراخوانی میشود و پرش به ´fred´ نادیده گرفته میشود. گزینهٔ ´dquote´ به زیرروال فرستاده میشود.
اگر از recolor به همراه call استفاده کنید، رنگِ بهکاررفته همان رنگِ نخستین حالت زیرروال خواهد بود.
خود زیرروال به شکل زیر به فراخواننده بازمیگردد:
-
"\"" whatever return
اگر درون یک زیرروال باشیم، به حالت مقصدِ فراخوانی ("fred" در مثال بالا) بازمیگردد. اگر درون زیرروال نباشیم، به "whatever" میپرد.
اگر از recolor به همراه return استفاده کنید، رنگِ بهکاررفته از حالتِ بازگشتی ("fred" در مثال بالا) گرفته میشود.
روشهای مختلفی برای تحدید محدودهٔ زیرروالها وجود دارد که در نحوهٔ فراخوانی آنها مشخص میشود. این گزینهها عبارتند از:
- call=string() - فایلی به نام string.jsf خود زیرروال است. تمام فایل زیرروال محسوب میشود. نقطهٔ شروع، اولین حالت در فایل است.
- call=library.string() - فایلی به نام library.jsf حاوی زیرروال است. زیرروالِ درون این فایل string نام دارد.
- call=.string() - زیرروالی به نام string در فایل جاری وجود دارد.
هنگامی که یک زیرروال درون یک فایل قرار دارد، اما تمام فایل را تشکیل نمیدهد، به شرح زیر محدودهبندی میشود:
-
.subr string
پرچمهای گزینه (Option flags) میتوانند به زیرروالها ارسال شوند که دستورهای شبهپیشپردازنده را کنترل میکنند. برای مثال:
-
.ifdef dquote "\"" idle return "´" idle return
دستور .else نیز در دسترس است. دستورهای .ifdef میتوانند تودرتو باشند.
گزینههای
^T،
صفحههای
راهنما و
پیوندهای
توالی
کلیدها به
دستورات
ویرایشگر،
همگی در
فایل
مقداردهی
اولیهٔ JOE
تعریف
شدهاند.
اگر
رونوشتی از
این فایل (که
معمولاً در
/etc/joe/joerc قرار
دارد) در $HOME/.joerc
ایجاد
کنید،
میتوانید
این
تنظیمات را
به دلخواه
خود
سفارشیسازی
نمایید. نحو
(syntax) فایل
مقداردهی
اولیه به
اندازهٔ
کافی واضح
است و
دستورالعملهای
بیشتری نیز
درون آن
وجود دارد.
فایل joerc دارای یک دستورالعمل برای گنجاندن فایلی دیگر (:include) است. این سازوکار برای گنجاندن فایلی به نام ftyperc (که معمولاً در /etc/joe/ftyperc قرار دارد) به کار میرود. فایل ftyperc حاوی جدول نوع فایل است که مشخص میکند کدام گزینههای محلی (شامل نحو برای برجستهساز/highlighter) برای هر نوع فایل اعمال شوند.
ترتیب بارگذاری فایل مقداردهی اولیه (Initialization file loading sequence)
اگر مسیر یک فایل مقداردهی اولیه با ´/´ آغاز شود (میتوانید این را با دستورالعمل include مشخص کنید)، ویرایشگر JOE تنها سعی میکند آن را از مسیر مطلق بارگذاری کند. در غیر این صورت، JOE تلاش میکند فایلهای مقداردهی اولیه (فایل joerc و هر فایلی که در آن گنجانده شده است، معمولاً ftyperc) را از سه مکان بارگذاری نماید:
- "$HOME/.joerc" - فایل joerc شخصیسازیشدهٔ کاربر.
- "/etc/joe/joerc" - فایل joerc سیستم. مسیر دقیق در زمان ساخت تعیین میشود و توسط گزینهٔ --sysconfdir در اسکریپت configure مشخص میگردد.
- "*joerc" - فایل داخلی (Built-in). به این معنا که JOE فایل را در جدولی از فایلهای پیوندخورده با باینری JOE (که در فایل builtins.c قرار دارند) جستوجو میکند. یک فایل داخلی joerc برای این تعبیه شده است تا در مواردی که joerc سیستم غیرقابلدسترس است، ویرایشگر همچنان اجرا شود.
اگر فایل joerc سیستم جدیدتر از فایل joerc کاربر باشد، JOE هشداری در گزارش راهاندازی (startup log) چاپ خواهد کرد. نسخههای پیشین JOE در این حالت از کاربر سوال میپرسیدند—ایده این بود که JOE ممکن است با یک فایل مقداردهی اولیهٔ قدیمی غیرقابلاستفاده باشد.
بخشهای فایل joerc (joerc file sections)
فایل joerc به چند بخش تقسیم شده است:
- گزینههای سراسری (Global options): گزینههایی که مختص به فایل خاصی نیستند، مانند noxon.
- گزینههای وابسته به نام و محتوای فایل: گزینههایی که به نوع فایل وابستهاند، مانند autoindent. فایل ftyperc در این بخش گنجانده شده است.
- تعریف سیستم منوی ^T: از defmenu: برای تعریف یک منوی نامگذاریشده از ماکروها استفاده کنید. دستور menu یک منوی مشخصِ نامگذاریشده را باز میکند. ^T ماکرویی است که منوی ریشه را نمایش میدهد: menu,"root",rtn.
- محتویات صفحهٔ راهنما: هر صفحهٔ راهنما دارای نام است. این نام برای پیادهسازی راهنمای وابسته به متن (context dependent) به کار میرود.
- پیوندهای کلیدها (Key bindings): جدولهای پیوند کلید تعریف میشوند. شما میتوانید هر تعداد که تمایل دارید تعریف کنید (با استفاده از دستور keymap میتوانید به یک مورد خاص جابهجا شوید)، اما موارد زیر باید ارائه شوند:
- main پنجرههای ویرایش
- prompt پنجرههای خط فرمان (پرامپت)
- query پرسشهای تکنویسهای
- querya پرسش تکنویسهای برای نقلقول (quote)
- querysr پرسش تکنویسهای برای جستوجو و جایگزینی
- shell پنجرههای پوسته
- vtshell پنجرههای پوستهٔ شبیهساز ترمینال
جدولهای پیوند کلید میتوانند پیوندها را از جدولهای تعریفشدهٔ قبلی به ارث ببرند. این امکان به شما اجازه میدهد تا کلیدهای میانبر مشترک را در یک جدول واحد گروهبندی کرده تا سایر جدولها از آن ارثبری کنند.
دستور Mode (Mode command)
بسیاری از گزینهها را میتوان از طریق منوی ^T کنترل کرد. این منو در فایل joerc تعریف شده است. هر گزینه در منوی ^T صرفاً یک ماکرو را اجرا میکند. معمولاً این ماکرو دستور mode است. شما میتوانید دستور mode را مستقیماً به شکل زیر اجرا کنید:
-
Esc X mode <enter>
کلیدهای Tab Tab را بزنید تا فهرست کاملسازی تمام گزینهها نمایش داده شود.
دستور Menu (Menu command)
این دستور یک منوی نامگذاریشده از ماکروها را که در فایل joerc تعریف شده است فراخوانی میکند.
-
Esc X menu <enter>
مانند همیشه، در خط اعلان کلیدهای Tab Tab را بزنید تا فهرست کاملسازی منوهای موجود نمایش داده شود.
کلید ^T به ماکروی سادهٔ menu,"root",rtn مقید شده است - این ماکرو ریشهٔ سیستم منوی گزینهها را باز میکند.
پشتیبانی از ماوس در Xterm (Xterm Mouse support)
دو سطح از پشتیبانی ماوس وجود دارد. گزینهٔ -mouse سطح اول را فعال میکند که با هر Xterm استاندارد کار خواهد کرد. اگر -joexterm نیز تنظیم شده باشد، پشتیبانی از ماوس بهبود مییابد، اما به نسخهٔ جدیدی از XTerm نیاز است و باید با گزینهٔ --enable-paste64 پیکربندی (./configure) شده باشد.
هنگامی که -mouse فعال باشد، میتوانید:
- در پنجرهٔ متنی کلیک چپ کنید تا موقعیت مکاننما تنظیم شود. در پنجرهای دیگر کلیک چپ کنید تا مکاننما به آن پنجره منتقل شود.
- متن را با ماوس انتخاب کنید. کلیک چپ کرده و بکشید (drag) تا متنی انتخاب شود - این کار همانند استفاده از ^K B و ^K K برای علامتگذاری متن خواهد بود. برای قرار دادن مکاننما در نقطهای دیگر، کلیک چپ کنید (اما درگ نکنید). برای چسباندن متنِ انتخابشده در موقعیت مکاننما، کلیک وسط کنید - درست مثل اینکه ^K C را فشرده باشید. اگر اشارهگر را به فراتر از لبهٔ پنجرهٔ متنی بکشید، پنجره برای انتخاب متن بیشتر بهطور خودکار پیمایش (auto-scroll) خواهد شد. متأسفانه Xterm زمانی که مکاننما در خارج از چارچوب خودِ Xterm قرار میگیرد کدی ارسال نمیکند، بنابراین این قابلیت تنها در صورتی عمل میکند که ماوس همچنان درون چارچوب Xterm باشد. من وصلهای (patch) برای بهبود این وضعیت به نگهدارندهٔ Xterm ارسال کردهام، اما او هنوز آن را ادغام نکرده است.
- تغییر اندازهٔ پنجرهها با ماوس: روی خط وضعیت جداکنندهٔ دو پنجره کلیک کرده و نگه دارید تا آن را جابهجا کنید.
- انتخاب موارد منو (مانند هر منوی تکمیل یا منوی گزینههای ^T): روی مورد دلخواه در منو کلیک کنید تا مکاننما روی آن قرار گیرد. روی مورد منو دوبار کلیک کنید تا انتخاب شود (معادل با فشردن کلید return در زمانی که مکاننما روی آن قرار دارد).
- اگر ماوس شما چرخک (scroll wheel) دارد، چرخاندن آن پنجرهای را که مکاننما در آن قرار دارد پیمایش میکند.
متأسفانه هنگامی که -mouse انتخاب شده باشد، برش و چسباندن (cut and paste) میان پنجرههای سامانهٔ X مانند حالت معمول در پنجرهٔ پوسته کار نمیکند (کلیک چپ و کشیدن برای انتخاب، کلیک وسط برای چسباندن). در عوض، باید کلید shift را برای این کار نگه دارید: shift-کلیک چپ و کشیدن برای انتخاب، و shift-کلیک وسط برای چسباندن. توجه داشته باشید که چسباندن متن در JOE از این طریق با مشکلاتی همراه است: هر نویسهٔ ` دچار بهمریختگی خواهد شد چرا که نویسهٔ ` به معنای نقلقول (quote) نویسهٔ کنترلیِ پس از آن است. همچنین اگر دندانهگذاری خودکار (auto-indent) فعال باشد، متن چسباندهشده بهدرستی دندانهگذاری نخواهد شد.
نکته: این مشکلات مربوط به چسباندن، در نسخههای جدید JOE برطرف شدهاند.
- ویرایشگر JOE حالت «bracketed paste» را در Xterm فعال میکند تا متن چسباندهشده در میان یک توالی فرار (escape sequence) محصور شود. این توالی باعث میشود JOE حالتهای autoindent، wordwrap و spaces را موقتاً برای عملیات چسباندن غیرفعال کند و پس از تکمیل، آنها را به حالت اولیه بازگرداند.
- حتی اگر شبیهساز ترمینال دارای قابلیت bracketed paste نباشد، JOE متنِ چسباندهشده را از طریق زمانبندی تشخیص میدهد: اگر متن یکباره وارد شود (همگی در یک بافر یکسان)، فرض میشود که متن جایگذاری شده است و autoindent و wordwrap موقتاً غیرفعال میشوند.
هنگامی که -joexterm تنظیم شده باشد (و Xterm را با گزینهٔ --enable-paste64 پیکربندی کرده باشید):
- •
- عملیات برش و چسباندن بهدرستی با X یکپارچه میشود. متنی که با کلیک چپ و کشیدن انتخاب شده باشد، برای چسباندن در سایر پنجرههای X در دسترس خواهد بود (حتی اگر متن انتخابشده بزرگتر از پنجرهٔ متنی باشد). متنی که در سایر پنجرههای X انتخاب شده است میتواند با کلیک وسط در JOE چسبانده شود. هیچ مشکلی در چسباندن متنهای حاوی ` یا همراه با auto-indent وجود نخواهد داشت.
گزینهٔ --enable-paste64 به یک برنامهٔ کاربردی اجازه میدهد دادههای انتخابیِ کدگذاریشده با فرمت Base-64 را با Xterm مبادله کند (ارسال و دریافت نماید). برنامه کنترل کاملی بر روی آنچه در دادههای انتخابی قرار دارد و زمان دریافت یا ارسال آن خواهد داشت. برنامهٔ JOE میتواند از Xterm تکرنگ (monochrome)، همچنین Xterm با ۸ رنگ، ۱۶ رنگ، ۸۸ رنگ و ۲۵۶ رنگ استفاده کند. تعداد رنگهایی که Xterm پشتیبانی میکند با گزینههای اسکریپت «configure» پیش از کامپایل کد منبع Xterm تعیین میشود. مدخل termcap یا terminfo باید با نحوهٔ پیکربندی Xterm شما سازگار باشد. در توزیع لینوکس Slackware من، باید متغیر محیطی TERM را روی یکی از این موارد تنظیم کنید:
- xterm
- xterm-color
- xterm-16color
- xterm-88color
- xterm-256color
اگر مدخل termcap/terminfo وجود نداشته باشد، میتوانید گزینهٔ «-assume_256color» را به فایل joerc اضافه کنید. توجه داشته باشید که این ویژگی برای terminfo در نسخههای پایینتر از 3.4 برنامهٔ JOE دچار اشکال بود.
هنگامی که این قابلیت درست کار کند، دستور: «joe -assume_256color -text_color bg_222» باید پسزمینهای خاکستری داشته باشد.
حالت ویرایش هگز (Hex edit mode)
هنگامی که این حالت انتخاب شود (چه با قرار دادن -hex در خط فرمان، یا با جستجوی «Hex edit mode» پس از فشردن ^T)، بافر بهصورت دامپ هگز (hex dump) نمایش داده میشود، اما تمام دستورهای ویرایشی به همان شیوهٔ همیشگی عمل میکنند. بسیار سودمند است که حالت جایگزینی (overtype) همراه با دامپ هگز انتخاب شود (فشردن ^T T). در این صورت، تایپ کردن عمل درج را انجام نخواهد داد.
- برای وارد کردن بایت هگز 0xF8 کلیدهای ^Q x F 8 را تایپ کنید.
- میتوانید طبق معمول از ^K C برای رونوشت (کپی) یک بلوک استفاده کنید. اگر حالت overtype انتخاب شده باشد، بلوک بدون تغییر دادن اندازهٔ فایل بر روی دادههای مقصد بازنویسی میشود. در غیر این صورت درج خواهد شد.
- کلیدهای Esc X byte <Enter> را برای پرش به یک آفست بایتی خاص فشار دهید. مقادیر هگز را میتوان در این اعلان به این صورت وارد کرد: 0x2000.
- جستجو، جستجوی افزایشی (incremental search)، و جستجو و جایگزینی همگی مانند گذشته عمل میکنند.
محیط (ENVIRONMENT)
برای اینکه JOE بهدرستی کار کند، تعدادی دیگر از تنظیمات محیطی باید صحیح باشند. میزان گذردهی (نرخ باود / baud rate) اتصال میان رایانه و ترمینال شما باید بهدرستی تنظیم شده باشد تا JOE بتواند صفحه را بهطور روان بهروزرسانی کند و به تایپ پیشاپیش (typeahead) اجازه دهد بهروزرسانی صفحه را به تعویق بیندازد. برای تنظیم این مقدار از دستور stty nnn استفاده کنید. بهتر است آن را تا جای ممکن نزدیک به گذردهی واقعی اتصال تنظیم کنید. به عنوان مثال، اگر از طریق یک مودم با نرخ ۱۲۰۰ باود متصل هستید، میخواهید از همین مقدار برای stty استفاده کنید. اگر از طریق مودم 14.4k متصل هستید، اما سرور ترمینالی که به آن متصلید با نرخ ۹۶۰۰ باود به رایانه وصل میشود، میخواهید سرعت خود را ۹۶۰۰ باود تعیین کنید. نرخ باود ویژهٔ ۳۸۴۰۰ یا extb برای نشان دادن این به کار میرود که شما یک اتصال بسیار پرسرعت دارید، مانند یک کنسول نگاشتشده در حافظه (memory-mapped) یا یک شبیهساز ترمینال X-window. اگر نمیتوانید از stty برای تنظیم گذردهی واقعی استفاده کنید (شاید به این دلیل که مودم با نرخی متفاوت از نرخ ارتباط روی خط تلفن با رایانه ارتباط برقرار میکند)، میتوانید در عوض یک مقدار عددی در متغیر محیطی BAUD قرار دهید (از setenv BAUD 9600 برای csh یا BAUD=9600; export BAUD برای sh استفاده کنید).
متغیر محیطی TERM باید روی نوع ترمینالی که استفاده میکنید تنظیم شود. اگر اندازه (تعداد خطوط/ستونها) ترمینال شما با آنچه در مدخل TERMCAP یا TERMINFO گزارش شده متفاوت است، میتوانید این مقدار را با دستور stty rows nn cols nn یا با تنظیم متغیرهای محیطی LINES و COLUMNS مشخص کنید. اندازهٔ ترمینال در سیستمهای امروزی متغیر است و با یک ioctl تعیین میشود، بنابراین این پارامترها اغلب اثری ندارند.
برنامهٔ JOE بهطور معمول انتظار دارد که کنترل جریان بین رایانه و ترمینال شما از دستتکانی (handshaking) با ^S/^Q استفاده کند (یعنی اگر رایانه نویسهها را بیش از حد سریع برای ترمینال شما بفرستد، ترمینال برای متوقف کردن خروجی ^S و برای ازسرگیری آن ^Q ارسال میکند). اگر کنترل جریان از دستتکانی سختافزاری یا خارج از باند (out-of-band) استفاده میکند یا اگر ترمینال شما به اندازهٔ کافی برای همگام ماندن همیشگی با خروجی رایانه سریع است و میخواهید ^S/^Q را به دستورهای ویرایشی نگاشت کنید، میتوانید متغیر محیطی NOXON را تنظیم کنید تا JOE تلاش کند دستتکانی ^S/^Q را خاموش کند. اگر اتصال میان رایانه و ترمینال شما از هیچ دستتکانی استفاده نمیکند و ترمینال شما به اندازهٔ کافی برای همگام شدن با خروجی رایانه سریع نیست، میتوانید متغیر محیطی DOPADDING را تنظیم کنید تا JOE با پراکندن نویسههای فاصلهگذار (PAD) در بین توالیهای بهروزرسانی صفحهٔ ترمینال، سرعت خروجی را کاهش دهد.
در اینجا فهرست کاملی از متغیرهای محیطی آمده است:
- BAUD
نرخ باود ترمینال را به JOE اعلام میکند (بر مقداری که توسط stty گزارش شده ارجحیت دارد). - COLUMNS
تعداد ستونها را در شبیهساز ترمینال تنظیم میکند (در صورتی که مدخل termcap نادرست باشد). این مورد تنها در سیستمهای قدیمی که فاقد ioctl «get window size» هستند مفید است. - DOPADDING
در صورت تنظیم، به JOE امکان میدهد تا بایتهای پوچ (NUL) پرکننده را به ترمینال ارسال کند (برای ترمینالهای بسیار قدیمی). - HOME
برای بهدست آوردن مسیر دایرکتوری خانه جهت بسط ~ و همچنین یافتن فایل ~/.joerc و دایرکتوری ~/.joe استفاده میشود. - HOSTNAME
برای بهدست آوردن نام میزبان جهت قرار دادن در قفلهای سازگار با EMACS به کار میرود. - JOETERM
نوع ترمینال را مشخص میکند: در صورت تنظیم شدن، JOE به جای TERM از این متغیر استفاده خواهد کرد. - LANG
لوکال (مانند en_US.utf-8) را تعیین میکند. برنامهٔ JOE از نخستین متغیری که از میان اینها تنظیم شده باشد استفاده میکند: LC_ALL، LC_CTYPE، LANG. - LC_ALL
لوکال (مانند en_US.utf-8) را تعیین میکند. برنامهٔ JOE از نخستین متغیری که از میان اینها تنظیم شده باشد استفاده میکند: LC_ALL، LC_CTYPE، LANG. - LC_CTYPE
لوکال (مانند en_US.utf-8) را تعیین میکند. برنامهٔ JOE از نخستین متغیری که از میان اینها تنظیم شده باشد استفاده میکند: LC_ALL، LC_CTYPE، LANG. - LINES
تعداد خطوط را در شبیهساز ترمینال تنظیم میکند (در صورتی که مدخل termcap نادرست باشد). این مورد تنها در سیستمهای قدیمی که فاقد ioctl «get window size» هستند مفید است. - NOXON
کنترل جریان ^S و ^Q را غیرفعال میکند، که احتمالاً اجازه میدهد ^S و ^Q به عنوان کلیدهای ویرایشگر استفاده شوند. - SHELL
مسیر پوسته (مانند /bin/sh). این مورد در چندین جا به کار میرود: اگر در سیستمی بدون کنترل کارها (job control) باشید، این پوسته با فشردن ^K Z فراخوانی میشود. همچنین این همان پوستهای است که در پنجرههای پوسته اجرا میشود. اگر SHELL تنظیم نشده باشد (Cygwin) یا اگر روی /bin/sh تنظیم شده باشد، JOE نخستین موردی را که از میان اینها وجود داشته باشد فراخوانی میکند: /bin/bash، /usr/bin/bash، /bin/sh. - SIMPLE_BACKUP_SUFFIX
در صورت تنظیم، برای ساخت نام فایل پشتیبان، این مقدار به جای ~ به انتهای نام فایل اضافه میشود. - TAGS
اگر روی مسیر یک فایل تنظیم شده باشد، در صورتی که فایل «tags» در دایرکتوری جاری موجود نباشد، JOE تلاش میکند از آن به عنوان فایل «tags» استفاده کند. - TEMP
در صورت تنظیم، مسیری را برای دایرکتوری باز کردن swapfile بهجای /tmp مشخص میکند. - TERMCAP
توسط تجزیهکنندهٔ داخلی فایل termcap در JOE استفاده میشود (برای terminfo به کار نمیرود). یک مدخل termcap میتواند مستقیماً در این متغیر قرار گیرد (که در صورت تطابق با TERM استفاده خواهد شد)، یا اگر با / شروع شود، فهرستی از مسیرهای فایلهای termcap را برای جستجو تعیین میکند.TERMPATH
فهرستی از مسیرهای فایلهای termcap را برای جستجو در زمانی که TERMCAP حاوی یک مدخل termcap است، ارائه میدهد (در غیر این صورت نادیده گرفته میشود). فهرست پیشفرض مسیرهای فایلهای termcap (زمانی که در TERMCAP و TERMPATH مشخص نشده باشد) عبارت است از: "~/.termcap /etc/joe/termcap /etc/termcap" - TERM
نوع پایانه را مشخص میکند، مانند "vt100" یا "xterm". - USER
برای دریافت نام کاربری جهت قفلگذاری فایلهای سازگار با EMACS استفاده میشود.
دستورهای JOE بر پایه عملکرد (JOE commands grouped by function)
این دستورها را میتوان در اعلان Esc X وارد کرد.
برنامههای پسزمینه
- bknd
اجرای یک پوسته در یک پنجره - vtbknd
اجرای یک پوسته در یک پنجره شبیهساز پایانه - killproc
خاتمه دادن به برنامه در پنجره فعلی - run
اجرای یک دستور UNIX در یک پنجره - sys
اجرای یک دستور UNIX و بازگشت به ویرایشگر پس از اتمام (ورودی/خروجی از ویرایشگر عبور نمیکند، اما وضعیت بازگشتی دستور دریافت میشود).
بلوکها
- blkcpy
کپی کردن بلوک نشانهگذاریشده در موقعیت مکاننما - blkdel
حذف بلوک نشانهگذاریشده - blkmove
انتقال بلوک نشانهگذاریشده به موقعیت مکاننما - blksave
ذخیره بلوک نشانهگذاریشده در یک فایل - copy
کپی کردن بلوک در kill-ring - drop
تنظیم markb. اگر از قبل تنظیم شده باشد، آن را حذف میکند. - dropon
تنظیم markb. اگر از قبل تنظیم شده باشد، آن را حذف میکند. حالت نشانهگذاری را فعال میکند. - toggle_marking
اگر درون یک بلوک باشیم: پاک کردن markb و markk. اگر نشانهگذاری خاموش باشد: تنظیم markb و روشن کردن نشانهگذاری. اگر نشانهگذاری روشن باشد: تنظیم markk (در صورت نیاز جابهجایی با markb) و خاموش کردن نشانهگذاری. - begin_marking
اگر روی یکی از لبههای یک بلوک باشیم: تنظیم markb روی لبه دیگر و فعال کردن حالت نشانهگذاری. در غیر این صورت، تنظیم markb روی مکاننما و فعال کردن حالت نشانهگذاری. - select
تنظیم markb. اگر از قبل تنظیم شده باشد، هیچ کاری انجام نمیدهد. - filt
فیلتر کردن بلوک یا فایل از طریق یک دستور UNIX - markb
تنظیم نشان ابتدای بلوک - markk
تنظیم نشان انتهای بلوکmarkl
علامتگذاری خط فعلی - nmark
حذف markb و markk - picokill
حذف خط یا بلوک - pop
بازیابی مقادیر markb و markk از پشته - psh
قراردادن مقادیر markb و markk در پشته - swap
تعویض مکاننما با markb - tomarkb
انتقال مکاننما به markb - tomarkbk
انتقال مکاننما به markb یا markk - tomarkk
انتقال مکاننما به markk - yank
درج بالاترین عنصر kill ring - yankpop
پیمایش در kill ring - yapp
الحاق مورد حذفی بعدی به بالای kill ring - upper
تبدیل تمام محتوای بلوک به حروف بزرگ - lower
تبدیل تمام محتوای بلوک به حروف کوچک
- bufed
منوی بافر - edit
بارگذاری فایل در پنجره: در صورت وجود بافر، برای بارگذاری مجدد سؤال میپرسد - switch
بارگذاری فایل در پنجره: در صورت وجود بافر، همیشه از آن استفاده میکند - scratch
افزودن یک بافر موقت (scratch) به پنجره جاری - popabort
لغو و خارج کردن (pop) پنجره از پشته (در صورت خالی بودن پشته کاری انجام نمیشود) - nbuf
بارگذاری بافر بعدی در پنجره جاری - pbuf
بارگذاری بافر قبلی در پنجره جاری - reload
خواندن دوباره فایل در بافر (بازگردانی) - reloadall
خواندن دوباره تمامی بافرهای تغییرنیافته
حرکت مکاننما (Cursor Motion)
- bof
انتقال مکاننما به ابتدای فایل - bol
انتقال مکاننما به ابتدای سطر (همیشه) - bop
رفتن به ابتدای پاراگراف - bos
رفتن به ابتدای صفحه نمایش - bkwdc
جستجوی رو به عقب برای یک نویسه - byte
انتقال مکاننما به آفست بایتی مشخصی در فایل. - col
انتقال مکاننما به شماره ستون مشخص. - dnarw
انتقال مکاننما به اندازه یک سطر به پایین - eof
انتقال مکاننما به انتهای فایل - eol
انتقال مکاننما به انتهای سطر - eop
انتقال مکاننما به انتهای پاراگراف - fwrdc
جستجوی رو به جلو برای نویسه منطبق - gomark
انتقال مکاننما به یک نشانکhome
انتقال مکاننما به ابتدای خط - line
انتقال مکاننما به خط مشخصشده - ltarw
انتقال مکاننما به چپ - nedge
انتقال مکاننما به لبهٔ بعدی - nextpos
انتقال مکاننما به موقعیت بعدی در تاریخچهٔ موقعیت مکاننما - nextword
انتقال مکاننما به انتهای کلمهٔ بعدی - pedge
انتقال مکاننما به لبهٔ قبلی - prevpos
انتقال مکاننما به موقعیت قبلی در تاریخچهٔ موقعیت مکاننما - prevword
انتقال مکاننما به ابتدای کلمهٔ قبلی - rtarw
انتقال مکاننما به راست - setmark
تنظیم یک نشانک - tomatch
انتقال مکاننما به جداکنندهٔ متناظر - tos
انتقال مکاننما به بالای صفحه - uparw
انتقال مکاننما به بالا
- backs
حذف نویسهٔ قبلی (Backspace) - backw
حذف یک کلمه به عقب - delbol
حذف تا ابتدای خط - delch
حذف نویسهٔ زیر مکاننما - deleol
حذف تا انتهای خط - dellin
حذف کل خط - delw
حذف کلمه به سمت راست
تجزیه خطاها (Error parsing)
- nxterr
رفتن به خطای تجزیهشدهٔ بعدی - parserr
تجزیهٔ خطاها در فایل جاری - gparse
تجزیهٔ فهرست grep در فایل جاری - jump
تجزیهٔ خط جاری و پرش به آن - prverr
رفتن به خطای تجزیهشدهٔ قبلی - showerr
نمایش پیام جاری - grep
اجرای دستور grep و تجزیه پس از پایان - build
اجرای دستور build و تجزیه پس از پایان - release
آزادسازی رکوردهای خطا/grep
- cancel
مشابه abort، اما وضعیتی مبنی بر شکست بازنمیگرداند: در ماکروها برای خارج شدن از اعلان (prompt) مفید است. - abort
لغو بافر/پنجرهٔ فعلی. در صورت تغییر یافتن، تأییدیه میخواهد. - abortbuf
مشابه مورد بالا، اما اگر به دلیل آخرین پنجره بودن روی یک بافر تغییریافته مجبور به اعلان هشدار شود، صرفاً با شکست مواجه میشود. - ask
نمایش اعلان برای ذخیرهٔ فایل فعلی: در صورت پاسخ مثبت کاربر بازمیگردد، در صورت پاسخ منفی کاربر: دستور ´abort´ را اجرا میکند. استفاده در ماکرو: "ask,query,exsave" - exsave
ذخیرهٔ فایل و خروج - lose
دستور EMACS kill buffer. بافر حذف میشود - هر پنجرهای که حاوی آن باشد یک بافر چرکنویس (scratch) جایگزین دریافت میکند. - querysave
نمایش اعلان برای ذخیرهٔ هر بافرِ تغییریافته. استفاده در ماکرو: "querysave,query,killjoe" - killjoe
خروج فوری از JOE بدون بررسی بافرهای تغییریافته
فایلها (Files)
- cd
تنظیم پیشوند دایرکتوری - save
ذخیرهٔ فایل - savenow
ذخیرهٔ فوری، مگر اینکه نام فایل مشخص نباشد - insf
درج یک فایل
قالببندی (Formatting)
- center
وسطچین کردن سطر - fmtblk
قالببندی تمام پاراگرافها در یک بلوک - format
قالببندی پاراگراف فعلی - lindent
تورفتگی به سمت چپ - rindent
تورفتگی به سمت راست
- help
روشن یا خاموش کردن راهنما - hnext
رفتن به صفحهٔ راهنمای بعدی - hprev
رفتن به صفحهٔ راهنمای قبلی
درج (Inserting)
- ctrl
تایپ کلید بعدی - finish
تکمیل کلمه در پنجرهٔ متن - insc
درج یک فاصله - open
درج سطر جدید - quote
درج یک نویسهٔ کنترلی - quote8
درج یک نویسهٔ متا - rtn
کلید Return / Enter - type
درج نویسهٔ تایپشده - secure_type
درج نویسهٔ تایپشده، اما فقط در پنجرههای اعلان (prompt) مجاز است (در پنجرههای پوسته مجاز نیست)
ماکروها (Macros)
- macros
درج ماکروهای صفحهکلید در فایل جاری - play
اجرای یک ماکرو - query
تعلیق ضبط ماکرو برای پرسش از کاربر - record
ضبط یک ماکرو - stop
توقف ضبط ماکرو
- backsmenu
واگرد در منوی تکمیل فایل - bofmenu
رفتن به ابتدای منو - bolmenu
رفتن به ابتدای سطر در منو - dnarwmenu
حرکت یک سطر به پایین در منو - eolmenu
انتقال مکاننما به انتهای سطر در منو - eofmenu
انتقال مکاننما به انتهای منو - ltarwmenu
انتقال مکاننما به چپ در منو - rtarwmenu
انتقال مکاننما به راست در منو - uparwmenu
انتقال مکاننما به بالا در منو - dnslidemenu
پیمایش منو یک سطر به پایین - upslidemenu
پیمایش منو یک سطر به بالا - pgupmenu
پیمایش منو به بالا - pgdnmenu
پیمایش منو به پایین - tabmenu
پیمایش منو با کلید Tab
- beep
پخش صدای بوق - execmd
اجرای یک فرمان JOE - debug_joe
درج اطلاعات اشکالزدایی در بافر - math
ماشینحساب - maths
ماشینحساب امن (بدون امکان اجرای ماکروهای joe()) - mode
اعلان حالت - menu
اعلان منو - msg
نمایش یک پیام - notmod
پاک کردن پرچم تغییریافته (modified) - retype
بازآوری صفحه - shell
تعلیق فرایند یا اجرای یک زیرپوسته (sub-shell) - stat
نمایش موقعیت مکاننما - tag
جستجوی فایل برچسبها (tags) - tagjump
پرش به انطباق بعدی جستجوی فایل برچسبها (تنها در صورتی که notagsmenu تنظیم شده باشد) - timer
اجرای دورهای یک ماکرو - txt
درج متن. اگر نخستین نویسه ` باشد، متن به عنوان یک رشتهٔ قالببندی فرض میشود (یعنی همان رشتهای که برای تعریف خط وضعیت در گزینههای rmsg و lmsg استفاده میشود) و پیش از درج قالببندی میگردد. - name
درج نام فایل جاری - language
درج زبان جاری - charset
درج مجموعه نویسه جاری - keymap
تغییر به یک نگاشت کلید دیگر
- complete
تکمیل نام فایل در یک اعلان - if
اجرای دستورهای بعدی تنها در صورتی که expr درست (غیر صفر) باشد - then
مشابه rtn است اما فقط در پنجرههای اعلان کار میکند - elsif
بررسی یک شرط جدید - else
تغییر وضعیت پرچم درستی - endif
شروع دوبارهٔ اجرای دستورها
در اینجا مثالی از یک ماکروی ´if´ آورده شده است:
if,"char==65",then,"it´s an A",else,"it´s not an A",endif __^[ q__
هنگامی که __^[ q__ را میفشارید، اگر نویسهٔ زیر مکاننما یک ´A´ باشد: عبارت "it´s a A" در بافر درج میشود، در غیر این صورت "it´s not an A" درج میگردد.
دستور "if" یک اعلان ریاضی (مانند __Esc M__) ایجاد میکند. دستور "then" مشابه "rtn" است - کلید return را برای این اعلان میفشارد.
درون اعلان ریاضی، متغیرهای زیر در دسترس هستند:
- char
مقدار ASCII نویسهٔ زیر مکاننما - width
عرض صفحه - height
ارتفاع صفحه - byte
شمارهٔ بایت - col
شمارهٔ ستون - line
شمارهٔ سطر - lines
تعداد خطوط در فایل - top
شمارهٔ سطرِ بالاترین خط پنجره
- arg
درخواست آرگومان تکرار - uarg
آرگومان عمومی
پیمایش (Scrolling)
- crawll
حرکت افقی صفحه به چپ - crawlr
حرکت افقی صفحه به راست - dnslide
پیمایش صفحه به اندازه ۱ خط به پایین - pgdn
پیمایش صفحه به پایین - pgup
پیمایش صفحه به بالا - upslide
پیمایش یک خط به بالا
جستوجو و جایگزینی (Search and replace)
- ffirst
یافتن متن - fnext
تکرار جستوجوی پیشین - isrch
جستوجوی افزایشی رو به جلو - qrepl
جستوجو و جایگزینی - rfirst
جستوجوی رو به عقب برای متن - rsrch
جستوجوی افزایشی معکوس
- explode
نمایش یک پنجره یا نمایش تمام پنجرهها - dupw
تکثیر پنجره فعلی - groww
افزایش اندازه پنجره - nextw
انتقال مکاننما به پنجره بعدی - prevw
رفتن به پنجره قبلی - shrinkw
کوچک کردن پنجره - splitw
تقسیم پنجره به دو نیم - tw0
حذف این پنجره - tw1
نمایش تنها یک پنجره - mwind
آوردن پنجره پیامهای خطا روی صفحه و قرار دادن مکاننما در آن. - showlog
آوردن بافر موقت لاگ راهاندازی به درون پنجره. - mfit
جا دادن دو پنجره در صفحه: پنجره فعلی ۶ خطی شده و باقی فضا به پنجره بالایی اختصاص مییابد. پنجره بالایی یا پنجره پیشینِ موجود است، یا اگر پنجرهای وجود نداشته باشد پنجرهای تازه ایجاد خواهد شد.
واگردانی (Undo)
- redo
اجرای مجدد آخرین تغییر واگردانیشده - undo
واگردانی آخرین تغییر
- tomouse
جابهجایی مکاننما به جایی که ماوس در آن کلیک یا کشیده شده است. - defmdown
گرداننده پیشفرض تککلیک، معمولاً مقید به MDOWN. مکاننما را به موقعیت ماوس منتقل کرده و یک ناحیه را آغاز میکند. - defmup
گرداننده پیشفرض رها کردن تککلیک، معمولاً مقید به MUP. انتخاب یک ناحیه را کامل میکند. - defmdrag
گرداننده پیشفرض کشیدن در تککلیک، معمولاً مقید به MDRAG. ناحیهای از متن را نویسهبهنویسه انتخاب میکند. - defm2down
گرداننده پیشفرض دوبار کلیک، معمولاً مقید به M2DOWN. - defm2up
گرداننده پیشفرض رها کردن دوبار کلیک، معمولاً مقید به M2UP. - defm2drag
گرداننده پیشفرض کشیدن در دوبار کلیک، معمولاً مقید به M2DRAG. ناحیهای از متن را کلمهبهکلمه انتخاب میکند. - defm3down
گرداننده پیشفرض سهبار کلیک، معمولاً مقید به M3DOWN. - defm3up
گرداننده پیشفرض رها کردن سهبار کلیک، معمولاً مقید به M3UP. - defm3drag
گرداننده پیشفرض کشیدن در سهبار کلیک، معمولاً مقید به M3DRAG. ناحیهای از متن را خطبهخط انتخاب میکند. - defmiddledown
گرداننده پیشفرض کلیک میانی، معمولاً مقید به MIDDLEDOWN. این عمل متن را درج میکند. - defmiddleup
گرداننده پیشفرض رها کردن کلیک میانی، معمولاً مقید به MIDDLEUP. - xtmouse
رویدادهای ماوس xterm را مدیریت میکند، معمولاً مقید به Esc [ M. بقیهٔ دنباله را پردازش کرده و «کلیدهای» ساختگی تولید میکند که میتوانند به ماکروها در فایل joerc مقید شوند. این گرداننده از یک زمانسنج برای تشخیص دوبار کلیک و سهبار کلیک استفاده میکند. کلیدها عبارتند از: MUP، MDOWN، MDRAG، M2UP، M2DOWN، M2DRAG، M3UP، M3DOWN، M3DRAG، MWUP و MWDOWN. - extmouse
رویدادهای گسترشیافتهٔ ماوس xterm را مدیریت میکند، معمولاً مقید به Esc [ <. - paste
درج متن کدگذاریشده با base64 (برای گزینهٔ --enable-base64 در XTerm). - brpaste
غیرفعال کردن autoindent، wordwrap و spaces. هدف این است که این دستور به Esc [ 2 0 0 ~ مقید شود تا هنگامی که شبیهساز پایانه یک جایگذاری ماوس ارسال میکند، متن بدون تغییر درج شود. - brpaste_done
بازگردانی حالتهای autoindent، wordwrap و spaces به مقادیر اصلیشان پیش از brpaste. هدف این است که این دستور به Esc [ 2 0 1 ~ مقید شود تا پس از جایگذاری ماوس، این حالتها بازیابی شوند.
| March 2016 |