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.