| LESSKEY(1) | General Commands Manual | LESSKEY(1) |
نام (NAME)
lesskey - سفارشیسازی کلیدهای میانبر برای less
خلاصه دستور (SYNOPSIS) (منسوخ شده)
lesskey [-o output] -- input
lesskey [--output=output] -- input
lesskey -V
lesskey --version
دامنه کاربرد (SCOPE)
این سند قالب پروندهٔ منبع lesskey را شرح میدهد که توسط less نسخهٔ 582 و بالاتر استفاده میشود. در نسخههای پیشین less، برنامهٔ جداگانهای به نام lesskey برای کامپایل کردن پروندهٔ منبع lesskey به قالبی به کار میرفت که قابل فهم باشد برای less. این مرحلهٔ کامپایل دیگر لازم نیست و بنابراین برنامهٔ lesskey منسوخ شده است، اگرچه قالب پرونده همچنان توسط خود less پشتیبانی میشود.
توضیحات (DESCRIPTION)
یک فایل lesskey مجموعهای از نگاشتهای کلید و متغیرهای محیطی را مشخص میکند، برای استفاده در فراخوانیهای بعدی less.
قالب فایل (FILE FORMAT)
فایل ورودی از یک یا چند بخش تشکیل شده است. هر بخش با خطی شروع میشود که نوع آن بخش را مشخص میکند. بخشهای ممکن عبارتند از:
- #command
- نگاشت کلیدهای دستور را سفارشی میکند.
- #line-edit
- نگاشت کلیدهای ویرایش خط را سفارشی میکند.
- #env
- متغیرهای محیطی را تعریف میکند.
خطهای خالی نادیده گرفته میشوند. هر متنی که پس از یک علامت هش (#) فرارنشده در یک خط بیاید، نادیده گرفته میشود، مگر در مواردی که در ادامه ذکر شده است.
بخش دستورات (COMMAND SECTION)
بخش دستورات با خط زیر آغاز میشود:
#command
اگر بخش دستورات اولین بخش در فایل باشد، میتوان این خط را نادیده گرفت. بخش دستورات از خطوطی با ساختار زیر تشکیل شده است:
string <whitespace> action <whitespace> [extra-string] <newline>
Whitespace هر توالی از یک یا چند فاصله و/یا تب است. عبارت string کلید(های) دستوری است که عمل را فراخوانی میکند. عبارت string میتواند یک کلید دستوری تکی یا توالیای از حداکثر ۱۵ کلید باشد. عبارت action نام عمل less است، برگرفته از فهرستهای موجود در بخشهای EXAMPLE در ادامه. نویسهها در string میتوانند بهصورت تحتاللفظی ظاهر شوند، یا اینکه یک علامت کَرِت (^) پیشوند آنها شود تا کلید کنترل را نشان دهد. یک بکاسلش بهدنبال یک تا سه رقم اکتال میتواند برای مشخص کردن یک نویسه با مقدار اکتال آن استفاده شود. یک بکاسلش بههمراه نویسههای مشخصی، نویسههای ورودی را بهصورت زیر تعیین میکند:
| \b | BACKSPACE | (0x08) |
| \e | ESCAPE | (0x1B) |
| \n | NEWLINE | (0x0A) |
| \r | RETURN | (0x0D) |
| \t | TAB | (0x09) |
ترکیب \k که به دنبال آن یک یا دو نویسه میآید، نشاندهندهٔ نویسه(هایی) است که هنگام فشرده شدن یکی از این کلیدها تولید میشود:
| \kb | BACKSPACE (کلید BACKSPACE؛ ممکن است با \b متفاوت باشد) |
| \kB | ctrl-BACKSPACE |
| \kd | DOWN ARROW (پیکان رو به پایین) |
| \kD | PAGE DOWN (صفحه بعد) |
| \ke | END (پایان) |
| \kE | ctrl-END |
| \kF | shift-END |
| \kh | HOME (آغاز) |
| \kH | ctrl-HOME |
| \kI | shift-HOME |
| \ki | INSERT (درج) |
| \kl | LEFT ARROW (پیکان چپ) |
| \kL | ctrl-LEFT ARROW |
| \kM | shift-LEFT ARROW |
| \kr | RIGHT ARROW (پیکان راست) |
| \kR | ctrl-RIGHT ARROW |
| \kS | shift-RIGHT ARROW |
| \kt | BACKTAB |
| \ku | UP ARROW (پیکان بالا) |
| \kU | PAGE UP (صفحه قبل) |
| \kx | DELETE (حذف) |
| \kX | ctrl-DELETE |
| \k1 | F1 |
| \kp1 | کلید پایین سمت چپ در صفحه کلید عددی |
| \kp2 | کلید پایین وسط در صفحه کلید عددی |
| \kp3 | کلید پایین سمت راست در صفحه کلید عددی |
| \kp4 | کلید وسط سمت چپ در صفحه کلید عددی |
| \kp5 | کلید مرکز در صفحه کلید عددی |
| \kp6 | کلید وسط سمت راست در صفحه کلید عددی |
| \kp7 | کلید بالا سمت چپ در صفحه کلید عددی |
| \kp8 | کلید بالا وسط در صفحه کلید عددی |
| \kp9 | کلید بالا سمت راست در صفحه کلید عددی |
| \kp0 | 0 در صفحه کلید عددی |
| \kp* | * در صفحه کلید عددی |
| \kp/ | / در صفحه کلید عددی |
| \kp- | - در صفحه کلید عددی |
| \kp+ | + در صفحه کلید عددی |
| \kp. | . در صفحه کلید عددی |
| \kp, | , در صفحه کلید عددی |
| \kpe | ENTER در صفحه کلید عددی |
یک بکاسلش که به دنبال آن هر نویسهٔ دیگری بیاید نشان میدهد که آن نویسه باید به صورت تحتاللفظی در نظر گرفته شود. نویسههایی که باید پیش از آنها بکاسلش قرار گیرد شامل علامت هشتک (^)، فاصله، تب، علامت هش (#) و خود بکاسلش هستند.
یک کنش ممکن است با یک رشتهٔ «اضافی» (extra) دنبال شود. هنگامی که چنین دستوری در حین اجرای less وارد شود، کنش انجام شده و سپس رشتهٔ اضافی درست مانند زمانی که در less تایپ شده باشد، تجزیه میشود. این قابلیت را میتوان در مواردی خاص برای گسترش کارکرد یک دستور به کار برد. برای نمونه، دستورهای «{» و «:t» را در مثال زیر ببینید. همچنین میتوان از آن برای اجرای بیش از یک دستور هنگام فشردن یک کلید استفاده کرد. به عنوان مثال، اگر این خط در یک فایل lesskey باشد، فشردن کلید «B» ابتدا نشان «b» را تنظیم کرده و سپس رشتهٔ «next» را جستجو میکند:
B set-mark b/next\n
رشتهٔ اضافی برای کنش «quit» معنای ویژهای دارد: هنگامی که less خارج میشود، مقدار ASCII نخستین نویسهٔ رشتهٔ اضافی به عنوان کد خروج آن استفاده میشود.
مثالها (EXAMPLES)
فایل ورودی زیر، مجموعهای از کلیدهای دستوری پیشفرض را که توسط less استفاده میشوند، توصیف میکند. مستندات هر دستور را میتوان در صفحهٔ راهنمای less تحت توالی کلیدی که آن دستور را فراخوانی میکند، یافت.
| #command | |
| \r | forw-line |
| \n | forw-line |
| e | forw-line |
| j | forw-line |
| \kd | forw-line |
| ^E | forw-line |
| ^N | forw-line |
| k | back-line |
| y | back-line |
| ^Y | back-line |
| ^K | back-line |
| ^P | back-line |
| \ku | back-line |
| J | forw-line-force |
| K | back-line-force |
| Y | back-line-force |
| d | forw-scroll |
| ^D | forw-scroll |
| u | back-scroll |
| ^U | back-scroll |
| \40 | forw-screen |
| f | forw-screen |
| ^F | forw-screen |
| ^V | forw-screen |
| \kD | forw-screen |
| b | back-screen |
| ^B | back-screen |
| \ev | back-screen |
| \kU | back-screen |
| z | forw-window |
| w | back-window |
| \e\40 | forw-screen-force |
| \eb | back-screen-force |
| \ej | forw-newline |
| \ek | back-newline |
| F | forw-forever |
| \eF | forw-until-hilite |
| \ef | forw-bell-hilite |
| R | repaint-flush |
| r | repaint |
| ^R | repaint |
| ^L | repaint |
| \eu | undo-hilite |
| \eU | clear-search |
| g | goto-line |
| \kh | goto-line |
| \kH | goto-line \e{ |
| \kI | goto-line \e{ |
| \ke | goto-end |
| \kE | goto-end \e} |
| \kF | goto-end \e} |
| < | goto-line |
| \e< | goto-line |
| p | percent |
| % | percent |
| \e( | left-scroll |
| \e) | right-scroll |
| \e{ | no-scroll |
| \e} | end-scroll |
| \kl | left-scroll |
| \kr | right-scroll |
| \kL | no-scroll |
| \kM | no-scroll |
| \kR | end-scroll |
| \kS | end-scroll |
| { | forw-bracket {} |
| } | back-bracket {} |
| ( | forw-bracket () |
| ) | back-bracket () |
| [ | forw-bracket [] |
| ] | back-bracket [] |
| \e^F | forw-bracket |
| \e^B | back-bracket |
| G | goto-end |
| \e> | goto-end |
| > | goto-end |
| P | goto-pos |
| \eG | goto-end-buffered |
| = | status |
| ^G | status |
| :f | status |
| / | forw-search |
| ? | back-search |
| \e/ | forw-search * |
| \e? | back-search * |
| n | repeat-search |
| \en | repeat-search-all |
| N | reverse-search |
| \eN | reverse-search-all |
| & | filter |
| m | set-mark |
| M | set-mark-bottom |
| \em | clear-mark |
| ' | goto-mark |
| ^X^X | goto-mark |
| E | examine |
| :e | examine |
| ^X^V | examine |
| :n | next-file |
| :p | prev-file |
| ^O^N | osc8-forw-search |
| ^On | osc8-forw-search |
| ^O^P | osc8-back-search |
| ^Op | osc8-back-search |
| ^O^O | osc8-open |
| ^Oo | osc8-open |
| ^O^L | osc8-jump |
| ^Ol | osc8-jump |
| t | next-tag |
| T | prev-tag |
| :x | index-file |
| :d | remove-file |
| - | toggle-option |
| :t | toggle-option t |
| s | toggle-option o |
| ## با شروع رشته اضافی با یک خط تیره، از یک | |
| ## نام گزینه طولانی استفاده کنید؛ برای نمونه: | |
| ## s toggle-option -log-file\n | |
| _ | display-option |
| | | pipe |
| v | visual |
| ! | shell |
| # | pshell |
| + | firstcmd |
| \e[M | mouse |
| \e[< | mouse6 |
| \kp1 | goto-end |
| \kp2 | forw-line |
| \kp3 | forw-screen |
| \kp4 | left-scroll |
| \kp6 | right-scroll |
| \kp7 | goto-line |
| \kp8 | back-line |
| \kp9 | back-screen |
| \kp0 | noaction 0 |
| \kp* | noaction * |
| \kp/ | noaction / |
| \kp- | noaction - |
| \kp+ | noaction + |
| \kp. | noaction . |
| \kp, | noaction , |
| H | help |
| h | help |
| \k1 | help |
| V | version |
| 0 | digit |
| 1 | digit |
| 2 | digit |
| 3 | digit |
| 4 | digit |
| 5 | digit |
| 6 | digit |
| 7 | digit |
| 8 | digit |
| 9 | digit |
| q | quit |
| Q | quit |
| :q | quit |
| :Q | quit |
| ZZ | quit |
اولویت (PRECEDENCE)
دستورات مشخصشده توسط lesskey بر دستورات پیشفرض اولویت دارند. یک کلید دستور پیشفرض را میتوان با قرار دادن آن در پرونده ورودی همراه با کنش "invalid" غیرفعال کرد. همچنین، میتوان کلیدی را طوری تعریف کرد که با استفاده از کنش "noaction" هیچ کاری انجام ندهد. "noaction" شبیه به "invalid" است، اما less برای یک دستور "invalid" بوق خطا پخش میکند، اما برای دستور "noaction" این کار را انجام نمیدهد. علاوه بر این، تمام دستورات پیشفرض را میتوان با افزودن این خط کنترلی به پرونده ورودی غیرفعال کرد:
#stop
این کار باعث میشود تمام دستورات پیشفرض نادیده گرفته شوند. خط #stop باید آخرین خط در آن بخش از پرونده باشد.
توجه داشته باشید که #stop میتواند خطرناک باشد. از آنجا که تمام دستورات پیشفرض غیرفعال میشوند، باید دستورات کافی را پیش از خط #stop فراهم کنید تا تمام کنشهای لازم فعال شوند. برای مثال، تعریف نکردن یک دستور "quit" میتواند منجر به سردرگمی و درماندگی شود.
بخش ویرایش خط (LINE EDITING SECTION)
بخش ویرایش خط با این خط آغاز میشود:
#line-edit
این بخش، کلیدهای مقیدشده جدیدی را برای دستورات ویرایش خط مشخص میکند، به شیوهای مشابه روشی که کلیدهای مقیدشده برای دستورات معمولی در بخش #command مشخص میشوند. بخش ویرایش خط شامل فهرستی از کلیدها و کنشها است، یک مورد در هر خط، مانند مثال زیر.
مثال (EXAMPLE)
پرونده ورودی زیر مجموعهای از کلیدهای پیشفرض ویرایش خط را که توسط less استفاده میشوند، توصیف میکند:
| #line-edit | |
| \t | forw-complete |
| \17 | back-complete |
| \ekt | back-complete |
| \e\t | back-complete |
| ^L | expand |
| ^V | literal |
| ^A | literal |
| \el | right |
| \kr | right |
| \eh | left |
| \kl | left |
| \eb | word-left |
| \e\kl | word-left |
| \e\kL | word-left |
| \ew | word-right |
| \e\kr | word-right |
| \e\kR | word-right |
| \ei | insert |
| \ki | insert |
| \ex | delete |
| \kx | delete |
| \eX | word-delete |
| \ekx | word-delete |
| \kX | word-delete |
| \e\b | word-backspace |
| \kB | word-backspace |
| \e0 | home |
| \kh | home |
| \e$ | end |
| \ke | end |
| \ek | up |
| \ku | up |
| \ej | down |
| \kd | down |
| ^G | abort |
| \kp1 | end |
| \kp2 | down |
| \kp4 | left |
| \kp6 | right |
| \kp7 | home |
| \kp8 | up |
| \kp0 | noaction 0 |
| \kp* | noaction * |
| \kp/ | noaction / |
| \kp- | noaction - |
| \kp+ | noaction + |
| \kp. | noaction . |
| \kp, | noaction , |
| \e[M | mouse |
| \e[< | mouse6 |
متغیرهای محیطی LESS (LESS ENVIRONMENT VARIABLES)
بخش متغیرهای محیطی با خط زیر آغاز میشود:
#env
به دنبال این خط، فهرستی از انتسابهای متغیرهای محیطی قرار میگیرد. هر خط شامل یک نام متغیر محیطی، یک علامت مساوی (=) و مقداری است که باید به آن متغیر تخصیص داده شود. فاصلههای خالی قبل و بعد از علامت مساوی نادیده گرفته میشوند. متغیرهایی که به این روش مقداردهی میشوند تنها برای less قابل مشاهده هستند. اگر متغیری در محیط سیستم و همچنین در پرونده lesskey مشخص شده باشد، مقدار موجود در پرونده lesskey اولویت دارد.
اگر پس از نام متغیر به جای = از += استفاده شود، رشته به مقدار موجود متغیر الحاق میگردد. این قابلیت در حال حاضر تنها زمانی کار میکند که خطوط حاوی += بلافاصله پس از تعریف اصلی همان متغیر (با خط =) و بدون هیچ تعریف مداخلهگر دیگری از متغیرهای دیگر قرار گیرند. این انتساب تنها میتواند به متغیری که پیشتر در همین پرونده تعریف شده الحاق کند و نمیتواند به متغیری در محیط سیستم چیزی بیفزاید. رشته بهطور تحتاللفظی و بدون افزودن هیچ فاصلهٔ اضافی الحاق میشود؛ بنابراین اگر فاصلهای مورد نیاز است، باید به انتهای خط قبلی اضافه شود. (نمیتوان آن را به ابتدای رشتهٔ += افزود زیرا همانطور که در بالا اشاره شد، فاصلهٔ پس از علامت مساوی نادیده گرفته میشود.)
در رشتهٔ پس از علامت =، زیررشتهای به قالب ${NAME} با مقدار متغیر محیطی "NAME" جایگزین میشود. مقدار متغیر میتواند از محیط سیستم، یک پرونده lesskey پیشین، یا تعریفی قبلی در پرونده lesskey فعلی بیاید. جایگزینیهای ساده متنی را میتوان با استفاده از نحو ${NAME/STRING/REPL} انجام داد. این کار تمامی موارد "STRING" در متغیر محیطی نامبرده را با متن "REPL" جایگزین میکند. STRING با استفاده از یک مقایسه متنی ساده تطبیق داده میشود؛ هیچ فرانویسهای (metacharacter) پشتیبانی نمیشود. هرگونه اسلش یا آکوالاد راست در STRING یا REPL باید با قرار دادن دو بکاسلش پیش از آن اسکیپ شود. اگر REPL یک رشته خالی باشد، تمامی موارد STRING حذف میشوند. اسلش درست قبل از علامت آکوالاد راست میتواند حذف شود. جایگزینیهای چندگانه را میتوان با نحو ${NAME/STRING1/REPL1/STRING2/REPL2} و به همین ترتیب انجام داد.
پیکربندی مشروط (CONDITIONAL CONFIGURATION)
اگر خطی با #version آغاز شود و به دنبال آن یک عملگر رابطهای و شماره نسخه بیاید، باقیمانده خط تجزیه میشود اگر و تنها اگر نسخه در حال اجرای less (یا lesskey) با آن عملگر مطابقت داشته باشد. این ویژگی زمانی مفید است که یک پرونده lesskey توسط نسخههای متفاوتی از less استفاده شود.
برای مثال، فرض کنید دستور جدیدی به نام 'sideways-search' در نسخه 777 از less اضافه شده باشد. در این صورت، خط زیر این دستور را به کلید Q اختصاص میدهد، اما تنها در نسخههایی از less که از آن پشتیبانی میکنند. این خط توسط نسخههای پیش از 777 نادیده گرفته میشود.
#version >= 777 Q sideways-search
این شش عملگر پشتیبانی میشوند:
| > | بزرگتر از |
| < | کوچکتر از |
| >= | بزرگتر یا مساوی با |
| <= | کوچکتر یا مساوی با |
| = | مساوی با |
| != | نامساوی با |
قابلیت #version در less و lesskey پیش از نسخه 594 پشتیبانی نمیشود. در آن نسخههای قدیمیتر، تمام خطوط #version نادیده گرفته میشوند.
مثالها (EXAMPLES)
پرونده ورودی زیر، هنگام اجرای less گزینههای -i و -S را تنظیم میکند و در نسخه 595 و بالاتر، گزینه --color را اضافه میکند.
#env ## (Note that there must be a space at the end of the next line, ## to separate the --color option from the -S option.) LESS = -i -S #version >= 595 LESS += --color=Hkc
همچنین ببینید (SEE ALSO)
هشدارها (WARNINGS)
در سیستمهای MS-DOS و OS/2، کلیدهای خاصی دنبالهای از نویسهها را ارسال میکنند که با یک نویسه NUL (0) آغاز میشود. این نویسه NUL باید در یک فایل lesskey بهصورت \340 نشان داده شود.
کپیرایت (COPYRIGHT)
Copyright (C) 1984-2026 Mark Nudelman
برنامه less بخشی از پروژه GNU و یک نرمافزار آزاد است. شما میتوانید آن را تحت شرایط یکی از موارد (1) مجوز GNU General Public License همانطور که توسط Free Software Foundation منتشر شده است؛ یا (2) Less License بازتوزیع کرده و/یا تغییر دهید. برای جزئیات بیشتر در رابطه با بازتوزیع، فایل README را در توزیع less ببینید. شما باید یک نسخه از GNU General Public License را همراه با کد منبع less دریافت کرده باشید؛ فایل COPYING را ببینید. در غیر این صورت، به Free Software Foundation به نشانی 59 Temple Place, Suite 330, Boston, MA 02111-1307, USA بنویسید. همچنین شما باید نسخهای از Less License را دریافت کرده باشید؛ فایل LICENSE را ببینید.
برنامه less به این امید توزیع شده است که مفید واقع شود، اما بدون هرگونه ضمانت؛ حتی بدون ضمانت ضمنی قابلیت فروش (MERCHANTABILITY) یا مناسب بودن برای یک هدف خاص (FITNESS FOR A PARTICULAR PURPOSE). برای جزئیات بیشتر GNU General Public License را ببینید.
نویسنده (AUTHOR)
Mark Nudelman
گزارش
باگها در
https://github.com/gwsw/less/issues.
| 30 May 2026 | less 704 |