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