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
direction (e.g., 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.
INPUTRC
environment 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
M-Control-u: universal-argument
or
C-Meta-u: universal-argument
into the inputrc would make M-C-u execute the readline
command universal-argument
.
The following symbolic character names are recognized
while processing key bindings:
RUBOUT
, DEL
, ESC
, LFD
,
NEWLINE
, RET
, RETURN
, SPC
,
SPACE
, and TAB
.
In addition to command names, readline allows keys to be bound to a string that is inserted when the key is pressed (a macro).
Meta-
or
Control-
prefixes, or as a key sequence. When using the
form
keyname:
function-name or macro
keyname is the name
of a key spelled out in English. For example:
In the above example, C-u is bound to the functionControl-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."
keyseq":
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
\C-
\M-
\e
\\
\"
\'
\a
\b
\d
\f
\n
\r
\t
\v
\nnn
\xnnn
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
using the -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.
set
variable-name value
Except where noted, readline variables can take the values
On
or Off
.
The variables and their default values are:
bell-style
(audible
)
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.
comment-begin
(``;
'')
insert-comment
command is executed. This command
is bound to M-#
in emacs mode and to #
in vi command mode.
completion-ignore-case
(Off
)
On
, readline performs filename matching
and completion in a case-insensitive fashion.
blink-matching-paren
(On
)
On
, readline will display the corresponding opening parenthesis when a closing parenthesis
is typed.
completion-query-items
(100
)
possible-completions
command. 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.
disable-completion
(Off
)
self-insert
.
editing-mode
(emacs
)
emacs
or vi
.
editing-mode
can
be set to either emacs
or vi
.
enable-keypad
(Off
)
On
, readline will try to enable the
application keypad when it is called. Some systems
need this to enable the arrow keys.
expand-tilde
(Off
)
on
, tilde expansion is performed when
readline attempts word completion.
horizontal-scroll-mode
(Off
)
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.
keymap
(emacs
)
emacs
, emacs-standard
, emacs-meta
,
emacs-ctlx
, vi
, vi-move
, vi-command
,
and vi-insert
. vi
is equivalent to vi-command
;
emacs
is equivalent
to emacs-standard
. The default value is emacs
; the
value of editing-mode
also affects the default
keymap.
mark-directories
(On
)
On
, completed directory names have a
slash appended.
mark-modified-lines
(Off
)
On
, history lines that have been modified
are displayed with a preceding asterisk (*
).
convert-meta
(On
)
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).
meta-flag
(Off
)
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.
output-meta
(Off
)
On
, readline will display characters with
the eighth bit set directly rather than as a meta-
prefixed escape sequence.
print-completions-horizontally
(Off
)
On
, readline will display completions
with matches sorted horizontally in alphabetical
order, rather than down the screen.
show-all-if-ambiguous
(Off
)
on
, words which have more
than one possible completion cause the matches to
be listed immediately instead of ringing the bell.
visible-stats
(Off
)
On
, a character denoting a file's type as
reported by stat
(2) is appended to the filename
when listing possible completions.
$if
$if
construct 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
mode=
form of the $if
directive is used
to test whether readline is in emacs
or vi
mode. This may be used in conjunction with
the set keymap
command, for instance, to set
bindings in the emacs-standard
and emacs-ctlx
keymaps only if readline is starting
out in emacs
mode.
term
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 sun
to match both sun
and sun-cmd
,
for instance.
application
application
construct 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
$endif
$if
command.
$else
$if
directive are
executed if the test fails.
$include
/etc/inputrc
:
$include /etc/inputrc
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.
beginning-of-line
(C-a)
end-of-line
(C-e)
forward-char
(C-f)
backward-char
(C-b)
forward-word
(M-f)
backward-word
(M-b)
clear-screen
(C-l)
redraw-current-line
accept-line
(Newline, Return)
previous-history
(C-p)
next-history
(C-n)
beginning-of-history
(M-<)
end-of-history
(M->)
reverse-search-history
(C-r)
forward-search-history
(C-s)
non-incremental-reverse-search-history
(M-p)
non-incremental-forward-search-history
(M-n)
history-search-forward
history-search-backward
yank-nth-arg
(M-C-y)
yank-last-arg
(M-., M-_)
yank-nth-arg
.
Successive calls to yank-last-arg
move back through
the history list, inserting the last argument of
each line in turn.
delete-char
(C-d)
delete-char
, then return EOF.
backward-delete-char
(Rubout)
quoted-insert
(C-q, C-v)
tab-insert
(M-TAB)
self-insert
(a, b, A, 1, !, ...)
transpose-chars
(C-t)
transpose-words
(M-t)
upcase-word
(M-u)
downcase-word
(M-l)
capitalize-word
(M-c)
kill-line
(C-k)
backward-kill-line
(C-x Rubout)
unix-line-discard
(C-u)
kill-whole-line
kill-word
(M-d)
forward-word
.
backward-kill-word
(M-Rubout)
backward-word
.
unix-word-rubout
(C-w)
backward-kill-word
.
delete-horizontal-space
(M-\)
kill-region
copy-region-as-kill
copy-backward-word
backward-word
.
copy-forward-word
forward-word
.
yank
(C-y)
yank-pop
(M-y)
yank
or yank-pop
.
digit-argument
(M-0, M-1, ..., M--)
universal-argument
universal-argument
again 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.
complete
(TAB)
Clisp
, for instance, attempts completion
of symbol names, of function names (if the
text is prefixed by (
or #'
) 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.
possible-completions
(M-?)
insert-completions
(M-*)
possible-completions
.
menu-complete
complete
, but replaces the word to be
completed with a single match from the list of pos-
sible completions. Repeated execution of menu-complete
steps 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.
start-kbd-macro
(C-x ()
end-kbd-macro
(C-x ))
call-last-kbd-macro
(C-x e)
re-read-init-file
(C-x C-r)
abort
(C-g)
bell-style
).
do-uppercase-version
(M-a, M-b, M-x, ...)
prefix-meta
(ESC)
undo
(C-_, C-x C-u)
revert-line
(M-r)
undo
command enough times to return the
line to its initial state.
tilde-expand
(M-~)
set-mark
(C-@, M-space)
exchange-point-and-mark
(C-x C-x)
character-search
(C-])
character-search-backward
(M-C-])
insert-comment
(M-#)
comment-begin
variable 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.
dump-functions
dump-variables
dump-macros
emacs-editing-mode
(C-e)
vi
editing mode, this causes a switch to
emacs
editing mode.
vi-editing-mode
(M-C-j)
emacs
editing mode, this causes a switch to
vi
editing mode.
self-insert
function, 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 bell-style
variable).
"C-@"set-mark
"C-A"beginning-of-line
"C-B"backward-char
"C-D"delete-char
"C-E"end-of-line
"C-F"forward-char
"C-G"abort
"C-H"backward-delete-char
"C-I"complete
"C-J"accept-line
"C-K"kill-line
"C-L"clear-screen
"C-M"accept-line
"C-N"next-history
"C-P"previous-history
"C-Q"quoted-insert
"C-R"reverse-search-history
"C-S"forward-search-history
"C-T"transpose-chars
"C-U"unix-line-discard
"C-V"quoted-insert
"C-W"unix-word-rubout
"C-Y"yank
"C-]"character-search
"C-_"undo
" " to "/"self-insert
"0" to "9"self-insert
":" to "~"self-insert
"C-?"backward-delete-char
"M-C-G"abort
"M-C-H"backward-kill-word
"M-C-I"tab-insert
"M-C-J"vi-editing-mode
"M-C-M"vi-editing-mode
"M-C-R"revert-line
"M-C-Y"yank-nth-arg
"M-C-["complete
"M-C-]"character-search-backward
"M-space"set-mark
"M-#"insert-comment
"M-&"tilde-expand
"M-*"insert-completions
"M--"digit-argument
"M-."yank-last-arg
"M-0"digit-argument
"M-1"digit-argument
"M-2"digit-argument
"M-3"digit-argument
"M-4"digit-argument
"M-5"digit-argument
"M-6"digit-argument
"M-7"digit-argument
"M-8"digit-argument
"M-9"digit-argument
"M-<"beginning-of-history
"M-="possible-completions
"M->"end-of-history
"M-?"possible-completions
"M-B"backward-word
"M-C"capitalize-word
"M-D"kill-word
"M-F"forward-word
"M-L"downcase-word
"M-N"non-incremental-forward-search-history
"M-O"arrow-key-prefix
"M-P"non-incremental-reverse-search-history
"M-R"revert-line
"M-T"transpose-words
"M-U"upcase-word
"M-Y"yank-pop
"M-\"delete-horizontal-space
"M-~"tilde-expand
"M-C-?"backward-delete-word
"M-_"yank-last-arg
"C-XC-G"abort
"C-XC-R"re-read-init-file
"C-XC-U"undo
"C-XC-X"exchange-point-and-mark
"C-X("start-kbd-macro
"C-X)"end-kbd-macro
"C-Xe"call-last-kbd-macro
"C-XC-?"backward-kill-line
"C-D"vi-eof-maybe
"C-H"backward-delete-char
"C-I"complete
"C-J"accept-line
"C-M"accept-line
"C-R"reverse-search-history
"C-S"forward-search-history
"C-T"transpose-chars
"C-U"unix-line-discard
"C-V"quoted-insert
"C-W"unix-word-rubout
"C-Y"yank
"C-["vi-movement-mode
"C-_"undo
" " to "~"self-insert
"C-?"backward-delete-char
"C-D"vi-eof-maybe
"C-E"emacs-editing-mode
"C-G"abort
"C-H"backward-char
"C-J"accept-line
"C-K"kill-line
"C-L"clear-screen
"C-M"accept-line
"C-N"next-history
"C-P"previous-history
"C-Q"quoted-insert
"C-R"reverse-search-history
"C-S"forward-search-history
"C-T"transpose-chars
"C-U"unix-line-discard
"C-V"quoted-insert
"C-W"unix-word-rubout
"C-Y"yank
" "forward-char
"#"insert-comment
"$"end-of-line
"%"vi-match
"&"vi-tilde-expand
"*"vi-complete
"+"next-history
","vi-char-search
"-"previous-history
"."vi-redo
"/"vi-search
"0"beginning-of-line
"1" to "9"vi-arg-digit
";"vi-char-search
"="vi-complete
"?"vi-search
"A"vi-append-eol
"B"vi-prev-word
"C"vi-change-to
"D"vi-delete-to
"E"vi-end-word
"F"vi-char-search
"G"vi-fetch-history
"I"vi-insert-beg
"N"vi-search-again
"P"vi-put
"R"vi-replace
"S"vi-subst
"T"vi-char-search
"U"revert-line
"W"vi-next-word
"X"backward-delete-char
"Y"vi-yank-to
"\"vi-complete
"^"vi-first-print
"_"vi-yank-arg
"`"vi-goto-mark
"a"vi-append-mode
"b"vi-prev-word
"c"vi-change-to
"d"vi-delete-to
"e"vi-end-word
"f"vi-char-search
"h"backward-char
"i"vi-insertion-mode
"j"next-history
"k"prev-history
"l"forward-char
"m"vi-set-mark
"n"vi-search-again
"p"vi-put
"r"vi-change-char
"s"vi-subst
"t"vi-char-search
"u"undo
"w"vi-next-word
"x"vi-delete
"y"vi-yank-to
"|"vi-column
"~"vi-change-case
bash
(1)
~/.inputrc
Last modified: 23 January 2000.