Readline commands may be given numeric arguments, which
normally act as a repeat count. Sometimes, however, it is
the sign of the argument that is significant. Passing a
negative argument to a command that acts in the forward
kill-line) causes that command to act in
a backward direction. Commands whose behavior with arguments deviates from this are noted.
When a command is described as killing text, the text deleted is saved for possible future retrieval (yanking). The killed text is saved in a kill ring. Consecutive kills cause the text to be accumulated into one unit, which can be yanked all at once. Commands which do not kill text separate the chunks of text on the kill ring.
INPUTRCenvironment variable. If that variable is unset, the default is
~/.inputrc. When a program which uses the readline library starts up, the init file is read, and the key bindings and variables are set. There are only a few basic constructs allowed in the readline init file. Blank lines are ignored. Lines beginning with a
#are comments. Lines beginning with a
$indicate conditional constructs. Other lines denote key bindings and variable settings. Each program using this library may add its own commands and bindings.
For example, placing
into the inputrc would make M-C-u execute the readline command
The following symbolic character names are recognized
while processing key bindings:
In addition to command names, readline allows keys to be bound to a string that is inserted when the key is pressed (a macro).
Control-prefixes, or as a key sequence. When using the form
keynamekeyname is the name of a key spelled out in English. For example:
:function-name or macro
In the above example, C-u is bound to the function
Control-u: universal-argument Meta-Rubout: backward-kill-word Control-o: ">&output"
universal-argument, M-DEL is bound to the function
backward-kill-word, and C-o is bound to run the macro expressed on the right hand side (that is, to insert the text >&output into the line).
In the second form,
keyseq differs from keyname above in that strings denoting an entire key sequence may be specified by placing the sequence within double quotes. Some GNU Emacs style key escapes can be used, as in the following example.
":function-name or macro
In this example, C-u is again bound to the function
"\C-u": universal-argument "\C-x\C-r": re-read-init-file "\e[11~": "Function Key 1"
universal-argument. C-x C-r is bound to the function
re-read-init-file, and ESC [ 1 1 ~ is bound to insert the text Function Key 1. The full set of GNU Emacs style escape sequences is
Bash allows the current readline key bindings to be displayed
or modified with the
bind builtin command. The
editing mode may be switched during interactive use by
-o option to the
set builtin command. Other
programs using this library provide similar mechanisms.
The inputrc file may be edited and re-read if a program
does not provide any other means to incorporate new bindings.
Except where noted, readline variables can take the values
The variables and their default values are:
none, readline never rings the bell. If set to
visible, readline uses a visible bell if one is available. If set to
audible, readline attempts to ring the terminal's bell.
insert-commentcommand is executed. This command is bound to
M-#in emacs mode and to
#in vi command mode.
On, readline performs filename matching and completion in a case-insensitive fashion.
On, readline will display the corresponding opening parenthesis when a closing parenthesis is typed.
possible-completionscommand. It may be set to any integer value greater than or equal to zero. If the number of possible completions is greater than or equal to the value of this variable, the user is asked whether or not he wishes to view them; otherwise they are simply listed on the terminal.
editing-modecan be set to either
On, readline will try to enable the application keypad when it is called. Some systems need this to enable the arrow keys.
on, tilde expansion is performed when readline attempts word completion.
On, makes readline use a single line for display, scrolling the input horizontally on a single screen line when it becomes longer than the screen width rather than wrapping to a new line.
viis equivalent to
emacsis equivalent to
emacs-standard. The default value is
emacs; the value of
editing-modealso affects the default keymap.
On, completed directory names have a slash appended.
On, history lines that have been modified are displayed with a preceding asterisk (
On, readline will convert characters with the eighth bit set to an ASCII key sequence by stripping the eighth bit and prepending an escape character (in effect, using escape as the meta prefix).
On, readline will enable eight-bit input (that is, it will not strip the high bit from the characters it reads), regardless of what the terminal claims it can support.
On, readline will display characters with the eighth bit set directly rather than as a meta- prefixed escape sequence.
On, readline will display completions with matches sorted horizontally in alphabetical order, rather than down the screen.
on, words which have more than one possible completion cause the matches to be listed immediately instead of ringing the bell.
On, a character denoting a file's type as reported by
stat(2) is appended to the filename when listing possible completions.
$ifconstruct allows bindings to be made based on the editing mode, the terminal being used, or the application using readline. The text of the test extends to the end of the line; no characters are required to isolate it.
mode=form of the
$ifdirective is used to test whether readline is in
vimode. This may be used in conjunction with the
set keymapcommand, for instance, to set bindings in the
emacs-ctlxkeymaps only if readline is starting out in
term=form may be used to include terminal-specific key bindings, perhaps to bind the key sequences output by the terminal's function keys. The word on the right side of the
=is tested against the full name of the terminal and the portion of the terminal name before the first
-. This allows
sunto match both
sun-cmd, for instance.
applicationconstruct is used to include application-specific settings. Each program using the readline library sets the application name, and an initialization file can test for a particular value. This could be used to bind key sequences to functions useful for a specific program. For instance, the following command adds a key sequence that quotes the current or previous word in Bash:
$if bash # Quote the current or previous word "\C-xq": "\eb\"\ef\"" $endif
$ifdirective are executed if the test fails.
Incremental searches begin before the user has finished typing the search string. As each character of the search string is typed, readline displays the next entry from the history matching the string typed so far. An incremental search requires only as many characters as needed to find the desired history entry. The Escape character is used to terminate an incremental search. Control-J will also terminate the search. Control-G will abort an incremental search and restore the original line. When the search is terminated, the history entry containing the search string becomes the current line. To find other matching entries in the history list, type Control-S or Control-R as appropriate. This will search backward or forward in the history for the next line matching the search string typed so far. Any other key sequence bound to a readline command will terminate the search and execute that command. For instance, a newline will terminate the search and accept the line, thereby executing the command from the history list.
Non-incremental searches read the entire search string before starting to search for matching history lines. The search string may be typed by the user or be part of the contents of the current line.
yank-nth-arg. Successive calls to
yank-last-argmove back through the history list, inserting the last argument of each line in turn.
delete-char, then return EOF.
self-insert(a, b, A, 1, !, ...)
digit-argument(M-0, M-1, ..., M--)
universal-argumentagain ends the numeric argument, but is otherwise ignored. As a special case, if this command is immediately fol- lowed by a character that is neither a digit or minus sign, the argument count for the next command is multiplied by four. The argument count is initially one, so executing this function the first time makes the argument count four, a second time makes the argument count sixteen, and so on.
Clisp, for instance, attempts completion of symbol names, of function names (if the text is prefixed by
#') or of filenames (if the text is prefixed by
Bash, on the other hand, attempts completion treating the text as a variable (if the text begins with
$), username (if the text begins with
~), hostname (if the text begins with
@), or command (including aliases and functions) in turn. If none of these produces a match, filename completion is attempted.
Gdb, finally, allows completion of program functions and variables, and only attempts filename completion under certain circumstances.
complete, but replaces the word to be completed with a single match from the list of pos- sible completions. Repeated execution of
menu-completesteps through the list of possible comple- tions, inserting each match in turn. At the end of the list of completions, the bell is rung and the original text is restored. An argument of n moves n positions forward in the list of matches; a nega- tive argument may be used to move backward through the list. This command is intended to be bound to
TAB, but is unbound by default.
do-uppercase-version(M-a, M-b, M-x, ...)
undo(C-_, C-x C-u)
undocommand enough times to return the line to its initial state.
comment-beginvariable is inserted at the beginning of the current line, and the line is accepted as if a newline had been typed. This makes the current line a shell comment.
viediting mode, this causes a switch to
emacsediting mode, this causes a switch to
self-insertfunction, which just inserts the given character into the input line. In vi insertion mode, all characters not specifically mentioned are bound to
self-insert. Characters assigned to signal generation by
stty(1) or the terminal driver, such as C-Z or C-C, retain that function. Upper and lower case metafied characters are bound to the same function in the emacs mode meta keymap. The remaining characters are unbound, which causes readline to ring the bell (subject to the setting of the
undo" " to "/"
self-insert"0" to "9"
self-insert":" to "~"
undo" " to "~"
beginning-of-line"1" to "9"
Last modified: 23 January 2000.