xref: /openbsd/usr.bin/less/lesskey.1 (revision 9b7c3dbb)
1.\"	$OpenBSD: lesskey.1,v 1.15 2015/11/23 12:56:13 tb Exp $
2.\"
3.\" Copyright (C) 2000-2012  Mark Nudelman
4.\"
5.\" Redistribution and use in source and binary forms, with or without
6.\" modification, are permitted provided that the following conditions
7.\" are met:
8.\" 1. Redistributions of source code must retain the above copyright
9.\"    notice, this list of conditions and the following disclaimer.
10.\" 2. Redistributions in binary form must reproduce the above copyright
11.\"    notice in the documentation and/or other materials provided with
12.\"    the distribution.
13.\"
14.\" THIS SOFTWARE IS PROVIDED BY THE AUTHOR ``AS IS'' AND ANY
15.\" EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
16.\" IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR
17.\" PURPOSE ARE DISCLAIMED.  IN NO EVENT SHALL THE AUTHOR BE LIABLE
18.\" FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
19.\" CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT
20.\" OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR
21.\" BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY,
22.\" WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE
23.\" OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN
24.\" IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
25.Dd $Mdocdate: November 23 2015 $
26.Dt LESSKEY 1
27.Os
28.Sh NAME
29.Nm lesskey
30.Nd specify key bindings for less
31.Sh SYNOPSIS
32.Nm lesskey
33.Oo Fl o Ar output
34.Pf " | " Fl -output Ns = Ns Ar output Oc
35.Op Ar input
36.Nm lesskey
37.Fl V | -version
38.Sh DESCRIPTION
39.Nm
40is used to specify a set of key bindings to be used by
41.Xr less 1 .
42The input file is a text file which describes the key bindings.
43If the input file is
44.Sq - ,
45standard input is read.
46If no input file is specified, a standard filename is used
47as the name of the input file; by default
48.Pa $HOME/.lesskey .
49.\" on MS-DOS systems, $HOME/_lesskey is used;
50.\" and on OS/2 systems $HOME/lesskey.ini is used,
51.\" or $INIT/lesskey.ini if $HOME is undefined.
52The output file is a binary file which is used by
53.Xr less 1 .
54If no output file is specified, and the environment variable
55.Ev LESSKEY
56is set, the value of
57.Ev LESSKEY
58is used as the name of the output file.
59Otherwise, a standard filename is used as the name of the output file;
60by default
61.Pa $HOME/.less
62is used.
63.\" on MS-DOS systems, $HOME/_less is used;
64.\" and on OS/2 systems, $HOME/less.ini is used,
65.\" or $INIT/less.ini if $HOME is undefined.
66If the output file already exists,
67.Nm
68will overwrite it.
69.Pp
70A system-wide lesskey file may also be set up to provide key bindings.
71If a key is defined in both a local lesskey file and in the
72system-wide file, key bindings in the local file take precedence over
73those in the system-wide file.
74If the environment variable
75.Ev LESSKEY_SYSTEM
76is set,
77.Xr less 1
78uses that as the name of the system-wide lesskey file.
79Otherwise,
80.Xr less 1
81looks in a standard place for the system-wide lesskey file:
82On
83.Ox ,
84the system-wide lesskey file is
85.Pa /etc/sysless .
86.Pp
87The
88.Fl V
89or
90.Fl -version
91option causes
92.Nm
93to print its version number and immediately exit.
94If
95.Fl V
96or
97.Fl -version
98is present, other options and arguments are ignored.
99.Pp
100The input file consists of one or more sections.
101Each section starts with a line that identifies the type of section.
102Possible sections are:
103.Bl -tag -width "#line-edit" -offset indent
104.It #command
105Defines new command keys.
106.It #line-edit
107Defines new line-editing keys.
108.It #env
109Defines environment variables.
110.El
111.Pp
112Blank lines and lines which start with a pound sign (#) are ignored,
113except for the special section header lines.
114.Sh COMMAND SECTION
115The command section begins with the line
116.Pp
117.Dl #command
118.Pp
119If the command section is the first section in the file,
120this line may be omitted.
121The command section consists of lines of the form:
122.Bd -filled -offset indent
123.Ar string
124.Aq whitespace
125.Ar action
126.Bq extra-string
127.Aq newline
128.Ed
129.Pp
130Whitespace is any sequence of one or more spaces and/or tabs.
131The
132.Ar string
133is the command key(s) which invoke the action.
134The
135.Ar string
136may be a single command key, or a sequence of up to 15 keys.
137The
138.Ar action
139is the name of the less action, from the list below.
140The characters in the
141.Ar string
142may appear literally, or be prefixed by a caret to indicate a control key.
143A backslash followed by one to three octal digits may be used to
144specify a character by its octal value.
145A backslash followed by certain characters specifies input
146characters as follows:
147.Pp
148.Bl -tag -width Ds -offset indent -compact
149.It \eb
150BACKSPACE
151.It \ee
152ESCAPE
153.It \en
154NEWLINE
155.It \er
156RETURN
157.It \et
158TAB
159.It \eku
160UP ARROW
161.It \ekd
162DOWN ARROW
163.It \ekr
164RIGHT ARROW
165.It \ekl
166LEFT ARROW
167.It \ekU
168PAGE UP
169.It \ekD
170PAGE DOWN
171.It \ekh
172HOME
173.It \eke
174END
175.It \ekx
176DELETE
177.El
178.Pp
179A backslash followed by any other character indicates that character is
180to be taken literally.
181Characters which must be preceded by backslash include
182caret, space, tab and the backslash itself.
183.Pp
184An action may be followed by an
185.Qq extra
186string.
187When such a command is entered while running less,
188the action is performed, and then the extra
189string is parsed, just as if it were typed in to less.
190This feature can be used in certain cases to extend
191the functionality of a command.
192For example, see the
193.Sq {
194and
195.Sq :t
196commands in the example below.
197The extra string has a special meaning for the
198.Qq quit
199action:
200when less quits,
201first character of the extra string is used as its exit status.
202.Pp
203The following input file describes the set of
204default command keys used by less:
205.Bd -literal -offset indent
206#command
207\er	forw-line
208\en	forw-line
209e	forw-line
210j	forw-line
211\ekd	forw-line
212^E	forw-line
213^N	forw-line
214k	back-line
215y	back-line
216^Y	back-line
217^K	back-line
218^P	back-line
219J	forw-line-force
220K	back-line-force
221Y	back-line-force
222d	forw-scroll
223^D	forw-scroll
224u	back-scroll
225^U	back-scroll
226\e40	forw-screen
227f	forw-screen
228^F	forw-screen
229^V	forw-screen
230\ekD	forw-screen
231b	back-screen
232^B	back-screen
233\eev	back-screen
234\ekU	back-screen
235z	forw-window
236w	back-window
237\ee\e40	forw-screen-force
238F	forw-forever
239\eeF	forw-until-hilite
240R	repaint-flush
241r	repaint
242^R	repaint
243^L	repaint
244\eeu	undo-hilite
245g	goto-line
246\ekh	goto-line
247<	goto-line
248\ee<	goto-line
249p	percent
250%	percent
251\ee[	left-scroll
252\ee]	right-scroll
253\ee(	left-scroll
254\ee)	right-scroll
255{	forw-bracket {}
256}	back-bracket {}
257(	forw-bracket ()
258)	back-bracket ()
259[	forw-bracket []
260]	back-bracket []
261\ee^F	forw-bracket
262\ee^B	back-bracket
263G	goto-end
264\ee>	goto-end
265>	goto-end
266\eke	goto-end
267=	status
268^G	status
269:f	status
270/	forw-search
271?	back-search
272\ee/	forw-search *
273\ee?	back-search *
274n	repeat-search
275\een	repeat-search-all
276N	reverse-search
277\eeN	reverse-search-all
278&	filter
279m	set-mark
280\'	goto-mark
281^X^X	goto-mark
282E	examine
283:e	examine
284^X^V	examine
285:n	next-file
286:p	prev-file
287t	next-tag
288T	prev-tag
289:x	index-file
290:d	remove-file
291-	toggle-option
292:t	toggle-option t
293s	toggle-option o
294_	display-option
295|	pipe
296v	visual
297!	shell
298+	firstcmd
299H	help
300h	help
301V	version
3020	digit
3031	digit
3042	digit
3053	digit
3064	digit
3075	digit
3086	digit
3097	digit
3108	digit
3119	digit
312q	quit
313Q	quit
314:q	quit
315:Q	quit
316ZZ	quit
317.Ed
318.Sh PRECEDENCE
319Commands specified by
320.Nm
321take precedence over the default commands.
322A default command key may be disabled by including it in the
323input file with the action
324.Qq invalid .
325Alternatively, a key may be defined
326to do nothing by using the action
327.Qq noaction .
328.Qq noaction
329is similar to
330.Qq invalid ,
331but less will give an error beep for an
332.Qq invalid
333command, but not for a
334.Qq noaction
335command.
336In addition, ALL default commands may be disabled by
337adding this control line to the input file:
338.Pp
339.Dl #stop
340.Pp
341This will cause all default commands to be ignored.
342The #stop line should be the last line in that section of the file.
343.Pp
344Be aware that #stop can be dangerous.
345Since all default commands are disabled, you must provide sufficient
346commands before the #stop line to enable all necessary actions.
347For example, failure to provide a
348.Qq quit
349command can lead to frustration.
350.Sh LINE EDITING SECTION
351The line-editing section begins with the line:
352.Pp
353.Dl #line-edit
354.Pp
355This section specifies new key bindings for the line editing commands,
356in a manner similar to the way key bindings for
357ordinary commands are specified in the #command section.
358The line-editing section consists of a list of keys and actions,
359one per line as in the example below.
360.Pp
361The following input file describes the set of
362default line-editing keys used by less:
363.Bd -literal -offset indent
364#line-edit
365\et	forw-complete
366\e17	back-complete
367\ee\et	back-complete
368^L	expand
369^V	literal
370^A	literal
371\eel	right
372\ekr	right
373\eeh	left
374\ekl	left
375\eeb	word-left
376\ee\ekl	word-left
377\eew	word-right
378\ee\ekr	word-right
379\eei	insert
380\eex	delete
381\ekx	delete
382\eeX	word-delete
383\eekx	word-delete
384\ee\eb	word-backspace
385\ee0	home
386\ekh	home
387\ee$	end
388\eke	end
389\eek	up
390\eku	up
391\eej	down
392^G	abort
393.Ed
394.Sh ENVIRONMENT SECTION
395The environment variable section begins with the line
396.Pp
397.Dl #env
398.Pp
399Following this line is a list of environment variable assignments.
400Each line consists of an environment variable name, an equals sign
401.Pq Sq =
402and the value to be assigned to the environment variable.
403Whitespace before and after the equals sign is ignored.
404Variables assigned in this way are visible only to less.
405If environment variables are defined in more than one place,
406variables defined in a local lesskey file take precedence over
407variables defined in the system environment, which take precedence
408over variables defined in the system-wide lesskey file.
409Although the lesskey file can be used to override variables set in the
410environment, the main purpose of assigning variables in the lesskey file
411is simply to have all less configuration information stored in one file.
412.Pp
413The following input file sets the -i option whenever less is run:
414.Bd -literal -offset indent
415#env
416LESS = -i
417.Ed
418.Sh ENVIRONMENT
419.Bl -tag -width LESSKEY_SYSTEM -compact
420.It Ev LESSKEY
421Name of the default
422.Nm
423file.
424.It Ev LESSKEY_SYSTEM
425Name of the default system-wide
426.Nm
427file.
428.El
429.Sh FILES
430.Bl -tag -width "$HOME/.lesskey" -compact
431.It $HOME/.less
432Default
433.Nm
434file.
435.It $HOME/.lesskey
436Default
437.Nm
438input file.
439.It /etc/sysless
440Default system-wide
441.Nm
442file.
443.El
444.Sh SEE ALSO
445.Xr less 1
446.Sh AUTHORS
447.An Mark Nudelman
448