LESSKEY(1) General Commands Manual LESSKEY(1)

lesskey - سفارشی‌سازی کلیدهای میانبر برای less

lesskey [-o output] -- input
lesskey [--output=output] -- input

lesskey -V
lesskey --version

این سند قالب پروندهٔ منبع lesskey را شرح می‌دهد که توسط less نسخهٔ 582 و بالاتر استفاده می‌شود. در نسخه‌های پیشین less، برنامهٔ جداگانه‌ای به نام lesskey برای کامپایل کردن پروندهٔ منبع lesskey به قالبی به کار می‌رفت که قابل فهم باشد برای less. این مرحلهٔ کامپایل دیگر لازم نیست و بنابراین برنامهٔ lesskey منسوخ شده است، اگرچه قالب پرونده همچنان توسط خود less پشتیبانی می‌شود.

یک فایل lesskey مجموعه‌ای از نگاشت‌های کلید و متغیرهای محیطی را مشخص می‌کند، برای استفاده در فراخوانی‌های بعدی less.

فایل ورودی از یک یا چند بخش تشکیل شده است. هر بخش با خطی شروع می‌شود که نوع آن بخش را مشخص می‌کند. بخش‌های ممکن عبارتند از:

#command
نگاشت کلیدهای دستور را سفارشی می‌کند.
#line-edit
نگاشت کلیدهای ویرایش خط را سفارشی می‌کند.
#env
متغیرهای محیطی را تعریف می‌کند.

خط‌های خالی نادیده گرفته می‌شوند. هر متنی که پس از یک علامت هش (#) فرارنشده در یک خط بیاید، نادیده گرفته می‌شود، مگر در مواردی که در ادامه ذکر شده است.

بخش دستورات با خط زیر آغاز می‌شود:

#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 نخستین نویسهٔ رشتهٔ اضافی به عنوان کد خروج آن استفاده می‌شود.

فایل ورودی زیر، مجموعه‌ای از کلیدهای دستوری پیش‌فرض را که توسط 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

دستورات مشخص‌شده توسط lesskey بر دستورات پیش‌فرض اولویت دارند. یک کلید دستور پیش‌فرض را می‌توان با قرار دادن آن در پرونده ورودی همراه با کنش "invalid" غیرفعال کرد. همچنین، می‌توان کلیدی را طوری تعریف کرد که با استفاده از کنش "noaction" هیچ کاری انجام ندهد. "noaction" شبیه به "invalid" است، اما less برای یک دستور "invalid" بوق خطا پخش می‌کند، اما برای دستور "noaction" این کار را انجام نمی‌دهد. علاوه بر این، تمام دستورات پیش‌فرض را می‌توان با افزودن این خط کنترلی به پرونده ورودی غیرفعال کرد:

#stop

این کار باعث می‌شود تمام دستورات پیش‌فرض نادیده گرفته شوند. خط #stop باید آخرین خط در آن بخش از پرونده باشد.

توجه داشته باشید که #stop می‌تواند خطرناک باشد. از آنجا که تمام دستورات پیش‌فرض غیرفعال می‌شوند، باید دستورات کافی را پیش از خط #stop فراهم کنید تا تمام کنش‌های لازم فعال شوند. برای مثال، تعریف نکردن یک دستور "quit" می‌تواند منجر به سردرگمی و درماندگی شود.

بخش ویرایش خط با این خط آغاز می‌شود:

#line-edit

این بخش، کلیدهای مقیدشده جدیدی را برای دستورات ویرایش خط مشخص می‌کند، به شیوه‌ای مشابه روشی که کلیدهای مقیدشده برای دستورات معمولی در بخش #command مشخص می‌شوند. بخش ویرایش خط شامل فهرستی از کلیدها و کنش‌ها است، یک مورد در هر خط، مانند مثال زیر.

پرونده ورودی زیر مجموعه‌ای از کلیدهای پیش‌فرض ویرایش خط را که توسط 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

بخش متغیرهای محیطی با خط زیر آغاز می‌شود:

#env

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

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

در رشتهٔ پس از علامت =، زیررشته‌ای به قالب ${NAME} با مقدار متغیر محیطی "NAME" جایگزین می‌شود. مقدار متغیر می‌تواند از محیط سیستم، یک پرونده lesskey پیشین، یا تعریفی قبلی در پرونده lesskey فعلی بیاید. جایگزینی‌های ساده متنی را می‌توان با استفاده از نحو ${NAME/STRING/REPL} انجام داد. این کار تمامی موارد "STRING" در متغیر محیطی نام‌برده را با متن "REPL" جایگزین می‌کند. STRING با استفاده از یک مقایسه متنی ساده تطبیق داده می‌شود؛ هیچ فرا‌نویسه‌ای (metacharacter) پشتیبانی نمی‌شود. هرگونه اسلش یا آکوالاد راست در STRING یا REPL باید با قرار دادن دو بک‌اسلش پیش از آن اسکیپ شود. اگر REPL یک رشته خالی باشد، تمامی موارد STRING حذف می‌شوند. اسلش درست قبل از علامت آکوالاد راست می‌تواند حذف شود. جایگزینی‌های چندگانه را می‌توان با نحو ${NAME/STRING1/REPL1/STRING2/REPL2} و به همین ترتیب انجام داد.

اگر خطی با #version آغاز شود و به دنبال آن یک عملگر رابطه‌ای و شماره نسخه بیاید، باقی‌مانده خط تجزیه می‌شود اگر و تنها اگر نسخه در حال اجرای less (یا lesskey) با آن عملگر مطابقت داشته باشد. این ویژگی زمانی مفید است که یک پرونده lesskey توسط نسخه‌های متفاوتی از less استفاده شود.

برای مثال، فرض کنید دستور جدیدی به نام 'sideways-search' در نسخه 777 از less اضافه شده باشد. در این صورت، خط زیر این دستور را به کلید Q اختصاص می‌دهد، اما تنها در نسخه‌هایی از less که از آن پشتیبانی می‌کنند. این خط توسط نسخه‌های پیش از 777 نادیده گرفته می‌شود.

#version >= 777  Q sideways-search

این شش عملگر پشتیبانی می‌شوند:

> بزرگتر از
< کوچکتر از
>= بزرگتر یا مساوی با
<= کوچکتر یا مساوی با
= مساوی با
!= نامساوی با

قابلیت #version در less و lesskey پیش از نسخه 594 پشتیبانی نمی‌شود. در آن نسخه‌های قدیمی‌تر، تمام خطوط #version نادیده گرفته می‌شوند.

پرونده ورودی زیر، هنگام اجرای 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

less(1)

در سیستم‌های MS-DOS و OS/2، کلیدهای خاصی دنباله‌ای از نویسه‌ها را ارسال می‌کنند که با یک نویسه NUL‏ (0) آغاز می‌شود. این نویسه NUL باید در یک فایل lesskey به‌صورت \340 نشان داده شود.

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 را ببینید.

Mark Nudelman
گزارش باگ‌ها در https://github.com/gwsw/less/issues.

30 May 2026 less 704