mirror of
https://github.com/freebsd/freebsd-src.git
synced 2026-10-28 11:25:21 +01:00
608 lines
14 KiB
Plaintext
608 lines
14 KiB
Plaintext
'\" t
|
|
.TH LESSKEY 5 "08 Sep 2026" "less 710"
|
|
.\" Define a string for the caret ("hat") as portably as possible.
|
|
.ie \n(.g .ds ^ \(ha
|
|
.el .ds ^ ^
|
|
.\" Define a string for the neutral apostrophe as portably as possible.
|
|
.ie \n(.g .ds ' \(aq
|
|
.el .ds ' '
|
|
.\" Define a string to interpolate the hyphenless break point escape
|
|
.\" sequence (for URLs and similar) if the formatter claims groff
|
|
.\" compatibility, else interpolate nothing.
|
|
.ie \n(.g .ds : \:
|
|
.el .ds : \" empty
|
|
.\" Define local versions of groff's "an-ext.tmac" macros if needed.
|
|
.ds %% \" empty
|
|
.if \n(.g .ig %%
|
|
.\" Prepare link text for mail/web hyperlinks. `MT` and `UR` call this.
|
|
.de mV
|
|
. ds mU \\$1\"
|
|
..
|
|
.
|
|
.
|
|
.\" Emit hyperlink. The optional argument supplies trailing punctuation
|
|
.\" after link text. `ME` and `UE` call this.
|
|
.de mQ
|
|
. mY
|
|
. nh
|
|
<\\*(mU>\\$1
|
|
. hy \\n(mH
|
|
. rm mU
|
|
..
|
|
.
|
|
.
|
|
.\" Start URL.
|
|
.\" .UR url
|
|
.if !\n(.g-\n(mG \{\
|
|
.de UR
|
|
. mV \\$1
|
|
..
|
|
.\}
|
|
.
|
|
.
|
|
.\" End URL.
|
|
.\" .UE [punctuation]
|
|
.if !\n(.g-\n(mG \{\
|
|
.de UE
|
|
. mQ \\$1
|
|
..
|
|
.\}
|
|
.%%
|
|
.SH NAME
|
|
lesskey \- customize key bindings for less
|
|
.SH DESCRIPTION
|
|
A
|
|
.B lesskey
|
|
file specifies a set of key bindings and environment variables
|
|
to be used by subsequent invocations of
|
|
.BR less (1).
|
|
The input file consists of one or more
|
|
.IR sections .
|
|
Each section starts with a line that identifies the type of section.
|
|
Possible sections are:
|
|
.IP #command
|
|
Customizes command key bindings.
|
|
.IP #line\-edit
|
|
Customizes line-editing key bindings.
|
|
.IP #env
|
|
Defines environment variables.
|
|
.PP
|
|
Blank lines are ignored.
|
|
Any text that follows an unescaped hash mark (#) in a line is ignored,
|
|
except as noted below.
|
|
.
|
|
.SH "COMMAND SECTION"
|
|
The command section begins with the line
|
|
.PP
|
|
#command
|
|
.PP
|
|
If the command section is the first section in the file,
|
|
this line may be omitted.
|
|
The command section consists of lines of the form:
|
|
.PP
|
|
\fIstring\fP <whitespace> \fIaction\fP <whitespace> [extra-string] <newline>
|
|
.PP
|
|
Whitespace is any sequence of one or more spaces and/or tabs.
|
|
The \fIstring\fP is the command key(s) which invoke the action.
|
|
The \fIstring\fP may be a single command key, or a sequence of up to 15 keys.
|
|
The \fIaction\fP is the name of the less action,
|
|
from the lists in the EXAMPLE sections below.
|
|
The characters in the \fIstring\fP may appear literally, or be
|
|
prefixed by a caret to indicate a control key.
|
|
A backslash followed by one to three octal digits may be used to
|
|
specify a character by its octal value.
|
|
A backslash followed by certain characters specifies input
|
|
characters as follows:
|
|
.RS 5m
|
|
.TS
|
|
l l l.
|
|
\eb BACKSPACE (0x08)
|
|
\ee ESCAPE (0x1B)
|
|
\en NEWLINE (0x0A)
|
|
\er RETURN (0x0D)
|
|
\et TAB (0x09)
|
|
.TE
|
|
.RE
|
|
.PP
|
|
\ek followed by one or two characters represents the char(s) produced
|
|
when one of these keys is pressed:
|
|
.RS 5m
|
|
.TS
|
|
l l.
|
|
\ekb BACKSPACE (may be different than \eb)
|
|
\ek\*^b or \ekB ctrl-BACKSPACE
|
|
\ekd DOWN ARROW
|
|
\ek\*^d ctrl-DOWN ARROW
|
|
\ek+d shift-DOWN ARROW
|
|
\ekD PAGE DOWN
|
|
\ek^D ctrl-PAGE DOWN
|
|
\ek+D shift-PAGE DOWN
|
|
\eke END
|
|
\ek\*^e or \ekE ctrl-END
|
|
\ek+e or \ekF shift-END
|
|
\ekh HOME
|
|
\ek\*^h or \ekH ctrl-HOME
|
|
\ek+h or \ekI shift-HOME
|
|
\eki INSERT
|
|
\ekl LEFT ARROW
|
|
\ek\*^l or \ekL ctrl-LEFT ARROW
|
|
\ek+l or \ekM shift-LEFT ARROW
|
|
\ekr RIGHT ARROW
|
|
\ek\*^r or \ekR ctrl-RIGHT ARROW
|
|
\ek+r or \ekS shift-RIGHT ARROW
|
|
\ekt BACKTAB
|
|
\eku UP ARROW
|
|
\ek\*^u ctrl-UP ARROW
|
|
\ek+u shift-UP ARROW
|
|
\ekU PAGE UP
|
|
\ek^U ctrl-PAGE UP
|
|
\ek+U shift-PAGE UP
|
|
\ekx DELETE
|
|
\ek\*^x or \ekX ctrl-DELETE
|
|
\ek+x shift-DELETE
|
|
\ek1 F1
|
|
\ekp1 lower left key on the numeric keypad
|
|
\ekp2 lower center key on the numeric keypad
|
|
\ekp3 lower right key on the numeric keypad
|
|
\ekp4 center left key on the numeric keypad
|
|
\ekp5 center key on the numeric keypad
|
|
\ekp6 center right key on the numeric keypad
|
|
\ekp7 upper left key on the numeric keypad
|
|
\ekp8 upper center key on the numeric keypad
|
|
\ekp9 upper right key on the numeric keypad
|
|
\ekp0 0 on the numeric keypad
|
|
\ekp* * on the numeric keypad
|
|
\ekp/ / on the numeric keypad
|
|
\ekp\- \- on the numeric keypad
|
|
\ekp+ + on the numeric keypad
|
|
\ekp. . on the numeric keypad
|
|
\ekp, , on the numeric keypad
|
|
\ekpe ENTER on the numeric keypad
|
|
.TE
|
|
.RE
|
|
.PP
|
|
A backslash followed by any other character indicates that character is
|
|
to be taken literally.
|
|
Characters which must be preceded by backslash include
|
|
caret, space, tab, hash mark and the backslash itself.
|
|
.PP
|
|
An action may be followed by an "extra" string.
|
|
When such a command is entered while running
|
|
.BR less ,
|
|
the action is performed, and then the extra
|
|
string is parsed, just as if it were typed in to
|
|
.BR less .
|
|
This feature can be used in certain cases to extend
|
|
the functionality of a command.
|
|
For example, see the "{" and ":t" commands in the example below.
|
|
It can also be used to execute more than one command when a key is pressed.
|
|
For example, if this line were in a lesskey file, pressing the "B" key
|
|
would first set the "b" mark and then search for the string "next":
|
|
.PP
|
|
.EX
|
|
.nf
|
|
B set\-mark b/next\en
|
|
.fi
|
|
.EE
|
|
.PP
|
|
The extra string has a special meaning for the "quit" action:
|
|
when
|
|
.B less
|
|
quits, the ASCII value of the first character of the extra string
|
|
is used as its exit status.
|
|
.
|
|
.SH EXAMPLE
|
|
The following input file describes the set of
|
|
default command keys used by
|
|
.BR less .
|
|
Documentation on each command can be found in the
|
|
.B less
|
|
man page, under the key sequence which invokes the command.
|
|
.PP
|
|
.RS 5m
|
|
.TS
|
|
l l.
|
|
#command
|
|
\er forw\-line
|
|
\en forw\-line
|
|
e forw\-line
|
|
j forw\-line
|
|
\ekd forw\-line
|
|
\*^E forw\-line
|
|
\*^N forw\-line
|
|
k back\-line
|
|
y back\-line
|
|
\*^Y back\-line
|
|
\*^K back\-line
|
|
\*^P back\-line
|
|
\eku 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
|
|
\e40 forw\-screen
|
|
f forw\-screen
|
|
\*^F forw\-screen
|
|
\*^V forw\-screen
|
|
\ekD forw\-screen
|
|
b back\-screen
|
|
\*^B back\-screen
|
|
\eev back\-screen
|
|
\ekU back\-screen
|
|
z forw\-window
|
|
w back\-window
|
|
\ee\e40 forw\-screen\-force
|
|
\eeb back\-screen\-force
|
|
\eej forw\-newline
|
|
\eek back\-newline
|
|
F forw\-forever
|
|
\eeF forw\-until\-hilite
|
|
\eef forw\-bell\-hilite
|
|
R repaint\-flush
|
|
r repaint
|
|
\*^R repaint
|
|
\*^L repaint
|
|
\eeu undo\-hilite
|
|
\eeU clear\-search
|
|
g goto\-line
|
|
\ekh goto\-line
|
|
\ekH goto\-line \ee{
|
|
\ekI goto\-line \ee{
|
|
\eke goto\-end
|
|
\ekE goto\-end \ee}
|
|
\ekF goto\-end \ee}
|
|
< goto\-line
|
|
\ee< goto\-line
|
|
p percent
|
|
% percent
|
|
\ee( left\-scroll
|
|
\ee) right\-scroll
|
|
\ee] right\-limit\-scroll
|
|
\ee{ no\-scroll
|
|
\ee} end\-scroll
|
|
\ekl left\-scroll
|
|
\ekr right\-scroll
|
|
\ee\ekr right\-limit\-scroll
|
|
\ekL no\-scroll
|
|
\ekM no\-scroll
|
|
\ekR end\-scroll
|
|
\ekS end\-scroll
|
|
{ forw\-bracket {}
|
|
} back\-bracket {}
|
|
( forw\-bracket ()
|
|
) back\-bracket ()
|
|
[ forw\-bracket []
|
|
] back\-bracket []
|
|
\ee\*^F forw\-bracket
|
|
\ee\*^B back\-bracket
|
|
G goto\-end
|
|
\ee> goto\-end
|
|
> goto\-end
|
|
P goto\-pos
|
|
\eeG goto\-end\-buffered
|
|
\&= status
|
|
\*^G status
|
|
:f status
|
|
/ forw\-search
|
|
? back\-search
|
|
\ee/ forw\-search *
|
|
\ee? back\-search *
|
|
n repeat\-search
|
|
\een repeat\-search\-all
|
|
N reverse\-search
|
|
\eeN reverse\-search\-all
|
|
& filter
|
|
m set\-mark
|
|
M set\-mark\-bottom
|
|
\eem 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
|
|
## Use a long option name by starting the
|
|
## extra string with ONE dash; eg:
|
|
## s toggle\-option \-log\-file\en
|
|
\&_ display\-option
|
|
| pipe
|
|
v visual
|
|
! shell
|
|
# pshell
|
|
+ firstcmd
|
|
\ee[M mouse
|
|
\ee[< mouse6
|
|
\ekp1 goto\-end
|
|
\ekp2 forw\-line
|
|
\ekp3 forw\-screen
|
|
\ekp4 left\-scroll
|
|
\ekp6 right\-scroll
|
|
\ekp7 goto\-line
|
|
\ekp8 back\-line
|
|
\ekp9 back\-screen
|
|
\ekp0 noaction 0
|
|
\ekp* noaction *
|
|
\ekp/ noaction /
|
|
\ekp\- noaction \-
|
|
\ekp+ noaction +
|
|
\ekp. noaction .
|
|
\ekp, noaction ,
|
|
H help
|
|
h help
|
|
\ek1 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
|
|
.TE
|
|
.RE
|
|
.SH PRECEDENCE
|
|
Commands specified by
|
|
.B lesskey
|
|
take precedence over the default commands.
|
|
A default command key may be disabled by including it in the
|
|
input file with the action "invalid".
|
|
Alternatively, a key may be defined
|
|
to do nothing by using the action "noaction".
|
|
"noaction" is similar to "invalid", but
|
|
.B less
|
|
will give an error beep for an "invalid" command,
|
|
but not for a "noaction" command.
|
|
In addition, ALL default commands may be disabled by
|
|
adding this control line to the input file:
|
|
.PP
|
|
#stop
|
|
.PP
|
|
This will cause all default commands to be ignored.
|
|
The #stop line should be the last line in that section of the file.
|
|
.PP
|
|
Be aware that #stop can be dangerous.
|
|
Since all default commands are disabled,
|
|
you must provide sufficient commands before the #stop line
|
|
to enable all necessary actions.
|
|
For example, failure to provide a "quit" command can lead to frustration.
|
|
.
|
|
.SH "LINE EDITING SECTION"
|
|
The line-editing section begins with the line:
|
|
.PP
|
|
.EX
|
|
#line\-edit
|
|
.EE
|
|
.PP
|
|
This section specifies new key bindings for the line editing commands,
|
|
in a manner similar to the way key bindings for
|
|
ordinary commands are specified in the #command section.
|
|
The line-editing section consists of a list of keys and actions,
|
|
one per line as in the example below.
|
|
.
|
|
.SH EXAMPLE
|
|
The following input file describes the set of
|
|
default line-editing keys used by
|
|
.BR less :
|
|
.PP
|
|
.RS 5m
|
|
.TS
|
|
l l.
|
|
#line\-edit
|
|
\et forw\-complete
|
|
\e17 back\-complete
|
|
\eekt back\-complete
|
|
\ee\et back\-complete
|
|
^L expand
|
|
^V literal
|
|
^A literal
|
|
\eel right
|
|
\ekr right
|
|
\eeh left
|
|
\ekl left
|
|
\eeb word\-left
|
|
\ee\ekl word\-left
|
|
\ee\ekL word\-left
|
|
\eew word\-right
|
|
\ee\ekr word\-right
|
|
\ee\ekR word\-right
|
|
\eei insert
|
|
\eki insert
|
|
\eex delete
|
|
\ekx delete
|
|
\eeX word\-delete
|
|
\eekx word\-delete
|
|
\ekX word\-delete
|
|
\ee\eb word\-backspace
|
|
\ekB word\-backspace
|
|
\ee0 home
|
|
\ekh home
|
|
\ee$ end
|
|
\eke end
|
|
\eek up
|
|
\eku up
|
|
\eej down
|
|
\ekd down
|
|
^G abort
|
|
\ekp1 end
|
|
\ekp2 down
|
|
\ekp4 left
|
|
\ekp6 right
|
|
\ekp7 home
|
|
\ekp8 up
|
|
\ekp0 noaction 0
|
|
\ekp* noaction *
|
|
\ekp/ noaction /
|
|
\ekp\- noaction \-
|
|
\ekp+ noaction +
|
|
\ekp. noaction .
|
|
\ekp, noaction ,
|
|
\ee[M mouse
|
|
\ee[< mouse6
|
|
.TE
|
|
.RE
|
|
.
|
|
.SH "LESS ENVIRONMENT VARIABLES"
|
|
The environment variable section begins with the line
|
|
.PP
|
|
#env
|
|
.PP
|
|
Following this line is a list of environment variable assignments.
|
|
Each line consists of an environment variable name, an equals sign (=)
|
|
and the value to be assigned to the environment variable.
|
|
White space before and after the equals sign is ignored.
|
|
Variables assigned in this way are visible only to
|
|
.BR less .
|
|
If a variable is specified in the system environment and also in a
|
|
lesskey file, the value in the lesskey file takes precedence.
|
|
.
|
|
.PP
|
|
If the variable name is followed by += rather than =,
|
|
the string is appended to the variable's existing value.
|
|
This currently works only if any += lines immediately follow
|
|
the same variable's original definition (with an = line),
|
|
without any intervening definitions of other variables.
|
|
It can append only to a variable defined earlier in the file;
|
|
it cannot append to a variable in the system environment.
|
|
The string is appended literally, without any extra whitespace added,
|
|
so if whitespace is desired,
|
|
it should be appended to the end of the preceding line.
|
|
(It cannot be added to the beginning of the += string because space after
|
|
the equals sign is ignored, as noted above.)
|
|
.
|
|
.PP
|
|
In the string after the = sign, a substring of the form ${NAME}
|
|
is replaced with the value of the environment variable "NAME".
|
|
The value of the variable may come from either the system environment,
|
|
an earlier lesskey file, or an earlier definition in the current lesskey file.
|
|
Simple text replacements can be performed by using
|
|
the syntax ${NAME/STRING/REPL}.
|
|
This replaces all instances of "STRING" in the named
|
|
environment variable with the text "REPL".
|
|
STRING is matched using a simple text comparison;
|
|
no metacharacters are supported.
|
|
An instance of slash or right curly bracket in STRING or REPL
|
|
must be escaped by preceding it with \fItwo\fP backslashes.
|
|
If REPL is an empty string, all instances of STRING are removed.
|
|
A slash immediately before the right curly bracket may be omitted.
|
|
Multiple replacements may be performed by using
|
|
the syntax ${NAME/STRING1/REPL1/STRING2/REPL2} and so on.
|
|
.
|
|
.SH CONDITIONAL CONFIGURATION
|
|
If a line begins with #version followed by a relational operator and a version number,
|
|
the remainder of the line is parsed if and only if the running version of
|
|
.B less
|
|
matches the operator.
|
|
This can be helpful if a lesskey file is used by different versions of
|
|
.BR less .
|
|
.PP
|
|
For example, suppose that a new command named 'sideways\-search' is added in
|
|
.B less
|
|
version 777.
|
|
Then the following line would assign the command to the Q key, but only in versions of
|
|
.B less
|
|
which support it. The line would be ignored by versions earlier than 777.
|
|
.PP
|
|
.EX
|
|
.nf
|
|
#version >= 777 Q sideways\-search
|
|
.fi
|
|
.EE
|
|
.PP
|
|
These six operators are supported:
|
|
.RS 5m
|
|
.TS
|
|
l l.
|
|
> Greater than
|
|
< Less than
|
|
>= Greater than or equal to
|
|
<= Less than or equal to
|
|
= Equal to
|
|
!= Not equal to
|
|
.TE
|
|
.RE
|
|
.PP
|
|
The #version feature is not supported in
|
|
.B less
|
|
before version 594.
|
|
In those older versions, all #version lines are ignored.
|
|
.
|
|
.SH EXAMPLE
|
|
The following input file sets the \-i and \-S options when
|
|
.B less
|
|
is run and, on version 595 and higher, adds a \-\-color option.
|
|
.PP
|
|
.EX
|
|
.nf
|
|
#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
|
|
.fi
|
|
.EE
|
|
.
|
|
.SH "SEE ALSO"
|
|
.BR less (1)
|
|
.
|
|
.SH WARNINGS
|
|
On MS-DOS and OS/2 systems, certain keys send a sequence of characters
|
|
which start with a NUL character (0).
|
|
This NUL character should be represented as \e340 in a lesskey file.
|
|
.
|
|
.SH COPYRIGHT
|
|
Copyright (C) 1984-2026 Mark Nudelman
|
|
.PP
|
|
less is part of the GNU project and is free software.
|
|
You can redistribute it and/or modify it
|
|
under the terms of either
|
|
(1) the GNU General Public License as published by
|
|
the Free Software Foundation; or (2) the Less License.
|
|
See the file README in the less distribution for more details
|
|
regarding redistribution.
|
|
You should have received a copy of the GNU General Public License
|
|
along with the source for less; see the file COPYING.
|
|
If not, write to the Free Software Foundation, 59 Temple Place,
|
|
Suite 330, Boston, MA 02111-1307, USA.
|
|
You should also have received a copy of the Less License;
|
|
see the file LICENSE.
|
|
.PP
|
|
less is distributed in the hope that it will be useful, but
|
|
WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY
|
|
or FITNESS FOR A PARTICULAR PURPOSE.
|
|
See the GNU General Public License for more details.
|
|
.
|
|
.SH AUTHOR
|
|
.
|
|
Mark Nudelman
|
|
.br
|
|
Report bugs at
|
|
.UR https://\*:github\*:.com/\*:gwsw/\*:less/\*:issues
|
|
.UE .
|