<html lang="en">
<head>
<title>Readline Init File Syntax - Debugging with GDB</title>
<meta http-equiv="Content-Type" content="text/html">
<meta name="description" content="Debugging with GDB">
<meta name="generator" content="makeinfo 4.13">
<link title="Top" rel="start" href="index.html#Top">
<link rel="up" href="Readline-Init-File.html#Readline-Init-File" title="Readline Init File">
<link rel="next" href="Conditional-Init-Constructs.html#Conditional-Init-Constructs" title="Conditional Init Constructs">
<link href="http://www.gnu.org/software/texinfo/" rel="generator-home" title="Texinfo Homepage">
<!--
Copyright (C) 1988-2019 Free Software Foundation, Inc.

Permission is granted to copy, distribute and/or modify this document
under the terms of the GNU Free Documentation License, Version 1.3 or
any later version published by the Free Software Foundation; with the
Invariant Sections being ``Free Software'' and ``Free Software Needs
Free Documentation'', with the Front-Cover Texts being ``A GNU Manual,''
and with the Back-Cover Texts as in (a) below.

(a) The FSF's Back-Cover Text is: ``You are free to copy and modify
this GNU Manual.  Buying copies from GNU Press supports the FSF in
developing GNU and promoting software freedom.''
-->
<meta http-equiv="Content-Style-Type" content="text/css">
<style type="text/css"><!--
  pre.display { font-family:inherit }
  pre.format  { font-family:inherit }
  pre.smalldisplay { font-family:inherit; font-size:smaller }
  pre.smallformat  { font-family:inherit; font-size:smaller }
  pre.smallexample { font-size:smaller }
  pre.smalllisp    { font-size:smaller }
  span.sc    { font-variant:small-caps }
  span.roman { font-family:serif; font-weight:normal; } 
  span.sansserif { font-family:sans-serif; font-weight:normal; } 
--></style>
</head>
<body>
<div class="node">
<a name="Readline-Init-File-Syntax"></a>
<p>
Next:&nbsp;<a rel="next" accesskey="n" href="Conditional-Init-Constructs.html#Conditional-Init-Constructs">Conditional Init Constructs</a>,
Up:&nbsp;<a rel="up" accesskey="u" href="Readline-Init-File.html#Readline-Init-File">Readline Init File</a>
<hr>
</div>

<h4 class="subsection">32.3.1 Readline Init File Syntax</h4>

<p>There are only a few basic constructs allowed in the
Readline init file.  Blank lines are ignored. 
Lines beginning with a &lsquo;<samp><span class="samp">#</span></samp>&rsquo; are comments. 
Lines beginning with a &lsquo;<samp><span class="samp">$</span></samp>&rsquo; indicate conditional
constructs (see <a href="Conditional-Init-Constructs.html#Conditional-Init-Constructs">Conditional Init Constructs</a>).  Other lines
denote variable settings and key bindings.

     <dl>
<dt>Variable Settings<dd>You can modify the run-time behavior of Readline by
altering the values of variables in Readline
using the <code>set</code> command within the init file. 
The syntax is simple:

     <pre class="example">          set <var>variable</var> <var>value</var>
</pre>
     <p class="noindent">Here, for example, is how to
change from the default Emacs-like key binding to use
<code>vi</code> line editing commands:

     <pre class="example">          set editing-mode vi
</pre>
     <p>Variable names and values, where appropriate, are recognized without regard
to case.  Unrecognized variable names are ignored.

     <p>Boolean variables (those that can be set to on or off) are set to on if
the value is null or empty, <var>on</var> (case-insensitive), or 1.  Any other
value results in the variable being set to off.

     <p>A great deal of run-time behavior is changeable with the following
variables.

     <p><a name="index-variables_002c-readline-3188"></a>
          <dl>
<dt><code>bell-style</code><dd><a name="index-bell_002dstyle-3189"></a>Controls what happens when Readline wants to ring the terminal bell. 
If set to &lsquo;<samp><span class="samp">none</span></samp>&rsquo;, Readline never rings the bell.  If set to
&lsquo;<samp><span class="samp">visible</span></samp>&rsquo;, Readline uses a visible bell if one is available. 
If set to &lsquo;<samp><span class="samp">audible</span></samp>&rsquo; (the default), Readline attempts to ring
the terminal's bell.

          <br><dt><code>bind-tty-special-chars</code><dd><a name="index-bind_002dtty_002dspecial_002dchars-3190"></a>If set to &lsquo;<samp><span class="samp">on</span></samp>&rsquo;, Readline attempts to bind the control characters
treated specially by the kernel's terminal driver to their Readline
equivalents.

          <br><dt><code>comment-begin</code><dd><a name="index-comment_002dbegin-3191"></a>The string to insert at the beginning of the line when the
<code>insert-comment</code> command is executed.  The default value
is <code>"#"</code>.

          <br><dt><code>completion-display-width</code><dd><a name="index-completion_002ddisplay_002dwidth-3192"></a>The number of screen columns used to display possible matches
when performing completion. 
The value is ignored if it is less than 0 or greater than the terminal
screen width. 
A value of 0 will cause matches to be displayed one per line. 
The default value is -1.

          <br><dt><code>completion-ignore-case</code><dd><a name="index-completion_002dignore_002dcase-3193"></a>If set to &lsquo;<samp><span class="samp">on</span></samp>&rsquo;, Readline performs filename matching and completion
in a case-insensitive fashion. 
The default value is &lsquo;<samp><span class="samp">off</span></samp>&rsquo;.

          <br><dt><code>completion-map-case</code><dd><a name="index-completion_002dmap_002dcase-3194"></a>If set to &lsquo;<samp><span class="samp">on</span></samp>&rsquo;, and <var>completion-ignore-case</var> is enabled, Readline
treats hyphens (&lsquo;<samp><span class="samp">-</span></samp>&rsquo;) and underscores (&lsquo;<samp><span class="samp">_</span></samp>&rsquo;) as equivalent when
performing case-insensitive filename matching and completion.

          <br><dt><code>completion-prefix-display-length</code><dd><a name="index-completion_002dprefix_002ddisplay_002dlength-3195"></a>The length in characters of the common prefix of a list of possible
completions that is displayed without modification.  When set to a
value greater than zero, common prefixes longer than this value are
replaced with an ellipsis when displaying possible completions.

          <br><dt><code>completion-query-items</code><dd><a name="index-completion_002dquery_002ditems-3196"></a>The number of possible completions that determines when the user is
asked whether the list of possibilities should be displayed. 
If the number of possible completions is greater than this value,
Readline will ask the user whether or not he wishes to view
them; otherwise, they are simply listed. 
This variable must be set to an integer value greater than or equal to 0. 
A negative value means Readline should never ask. 
The default limit is <code>100</code>.

          <br><dt><code>convert-meta</code><dd><a name="index-convert_002dmeta-3197"></a>If set to &lsquo;<samp><span class="samp">on</span></samp>&rsquo;, Readline will convert characters with the
eighth bit set to an <span class="sc">ascii</span> key sequence by stripping the eighth
bit and prefixing an &lt;ESC&gt; character, converting them to a
meta-prefixed key sequence.  The default value is &lsquo;<samp><span class="samp">on</span></samp>&rsquo;.

          <br><dt><code>disable-completion</code><dd><a name="index-disable_002dcompletion-3198"></a>If set to &lsquo;<samp><span class="samp">On</span></samp>&rsquo;, Readline will inhibit word completion. 
Completion  characters will be inserted into the line as if they had
been mapped to <code>self-insert</code>.  The default is &lsquo;<samp><span class="samp">off</span></samp>&rsquo;.

          <br><dt><code>editing-mode</code><dd><a name="index-editing_002dmode-3199"></a>The <code>editing-mode</code> variable controls which default set of
key bindings is used.  By default, Readline starts up in Emacs editing
mode, where the keystrokes are most similar to Emacs.  This variable can be
set to either &lsquo;<samp><span class="samp">emacs</span></samp>&rsquo; or &lsquo;<samp><span class="samp">vi</span></samp>&rsquo;.

          <br><dt><code>echo-control-characters</code><dd>When set to &lsquo;<samp><span class="samp">on</span></samp>&rsquo;, on operating systems that indicate they support it,
readline echoes a character corresponding to a signal generated from the
keyboard.  The default is &lsquo;<samp><span class="samp">on</span></samp>&rsquo;.

          <br><dt><code>enable-keypad</code><dd><a name="index-enable_002dkeypad-3200"></a>When set to &lsquo;<samp><span class="samp">on</span></samp>&rsquo;, Readline will try to enable the application
keypad when it is called.  Some systems need this to enable the
arrow keys.  The default is &lsquo;<samp><span class="samp">off</span></samp>&rsquo;.

          <br><dt><code>enable-meta-key</code><dd>When set to &lsquo;<samp><span class="samp">on</span></samp>&rsquo;, Readline will try to enable any meta modifier
key the terminal claims to support when it is called.  On many terminals,
the meta key is used to send eight-bit characters. 
The default is &lsquo;<samp><span class="samp">on</span></samp>&rsquo;.

          <br><dt><code>expand-tilde</code><dd><a name="index-expand_002dtilde-3201"></a>If set to &lsquo;<samp><span class="samp">on</span></samp>&rsquo;, tilde expansion is performed when Readline
attempts word completion.  The default is &lsquo;<samp><span class="samp">off</span></samp>&rsquo;.

          <br><dt><code>history-preserve-point</code><dd><a name="index-history_002dpreserve_002dpoint-3202"></a>If set to &lsquo;<samp><span class="samp">on</span></samp>&rsquo;, the history code attempts to place the point (the
current cursor position) at the
same location on each history line retrieved with <code>previous-history</code>
or <code>next-history</code>.  The default is &lsquo;<samp><span class="samp">off</span></samp>&rsquo;.

          <br><dt><code>history-size</code><dd><a name="index-history_002dsize-3203"></a>Set the maximum number of history entries saved in the history list.  If
set to zero, the number of entries in the history list is not limited.

          <br><dt><code>horizontal-scroll-mode</code><dd><a name="index-horizontal_002dscroll_002dmode-3204"></a>This variable can be set to either &lsquo;<samp><span class="samp">on</span></samp>&rsquo; or &lsquo;<samp><span class="samp">off</span></samp>&rsquo;.  Setting it
to &lsquo;<samp><span class="samp">on</span></samp>&rsquo; means that the text of the lines being edited will scroll
horizontally on a single screen line when they are longer than the width
of the screen, instead of wrapping onto a new screen line.  By default,
this variable is set to &lsquo;<samp><span class="samp">off</span></samp>&rsquo;.

          <br><dt><code>input-meta</code><dd><a name="index-input_002dmeta-3205"></a><a name="index-meta_002dflag-3206"></a>If set to &lsquo;<samp><span class="samp">on</span></samp>&rsquo;, Readline will enable eight-bit input (it
will not clear the eighth bit in the characters it reads),
regardless of what the terminal claims it can support.  The
default value is &lsquo;<samp><span class="samp">off</span></samp>&rsquo;.  The name <code>meta-flag</code> is a
synonym for this variable.

          <br><dt><code>isearch-terminators</code><dd><a name="index-isearch_002dterminators-3207"></a>The string of characters that should terminate an incremental search without
subsequently executing the character as a command (see <a href="Searching.html#Searching">Searching</a>). 
If this variable has not been given a value, the characters &lt;ESC&gt; and
<kbd>C-J</kbd> will terminate an incremental search.

          <br><dt><code>keymap</code><dd><a name="index-keymap-3208"></a>Sets Readline's idea of the current keymap for key binding commands. 
Acceptable <code>keymap</code> names are
<code>emacs</code>,
<code>emacs-standard</code>,
<code>emacs-meta</code>,
<code>emacs-ctlx</code>,
<code>vi</code>,
<code>vi-move</code>,
<code>vi-command</code>, and
<code>vi-insert</code>. 
<code>vi</code> is equivalent to <code>vi-command</code>; <code>emacs</code> is
equivalent to <code>emacs-standard</code>.  The default value is <code>emacs</code>. 
The value of the <code>editing-mode</code> variable also affects the
default keymap.

          <br><dt><code>mark-directories</code><dd>If set to &lsquo;<samp><span class="samp">on</span></samp>&rsquo;, completed directory names have a slash
appended.  The default is &lsquo;<samp><span class="samp">on</span></samp>&rsquo;.

          <br><dt><code>mark-modified-lines</code><dd><a name="index-mark_002dmodified_002dlines-3209"></a>This variable, when set to &lsquo;<samp><span class="samp">on</span></samp>&rsquo;, causes Readline to display an
asterisk (&lsquo;<samp><span class="samp">*</span></samp>&rsquo;) at the start of history lines which have been modified. 
This variable is &lsquo;<samp><span class="samp">off</span></samp>&rsquo; by default.

          <br><dt><code>mark-symlinked-directories</code><dd><a name="index-mark_002dsymlinked_002ddirectories-3210"></a>If set to &lsquo;<samp><span class="samp">on</span></samp>&rsquo;, completed names which are symbolic links
to directories have a slash appended (subject to the value of
<code>mark-directories</code>). 
The default is &lsquo;<samp><span class="samp">off</span></samp>&rsquo;.

          <br><dt><code>match-hidden-files</code><dd><a name="index-match_002dhidden_002dfiles-3211"></a>This variable, when set to &lsquo;<samp><span class="samp">on</span></samp>&rsquo;, causes Readline to match files whose
names begin with a &lsquo;<samp><span class="samp">.</span></samp>&rsquo; (hidden files) when performing filename
completion. 
If set to &lsquo;<samp><span class="samp">off</span></samp>&rsquo;, the leading &lsquo;<samp><span class="samp">.</span></samp>&rsquo; must be
supplied by the user in the filename to be completed. 
This variable is &lsquo;<samp><span class="samp">on</span></samp>&rsquo; by default.

          <br><dt><code>menu-complete-display-prefix</code><dd><a name="index-menu_002dcomplete_002ddisplay_002dprefix-3212"></a>If set to &lsquo;<samp><span class="samp">on</span></samp>&rsquo;, menu completion displays the common prefix of the
list of possible completions (which may be empty) before cycling through
the list.  The default is &lsquo;<samp><span class="samp">off</span></samp>&rsquo;.

          <br><dt><code>output-meta</code><dd><a name="index-output_002dmeta-3213"></a>If set to &lsquo;<samp><span class="samp">on</span></samp>&rsquo;, Readline will display characters with the
eighth bit set directly rather than as a meta-prefixed escape
sequence.  The default is &lsquo;<samp><span class="samp">off</span></samp>&rsquo;.

          <br><dt><code>page-completions</code><dd><a name="index-page_002dcompletions-3214"></a>If set to &lsquo;<samp><span class="samp">on</span></samp>&rsquo;, Readline uses an internal <code>more</code>-like pager
to display a screenful of possible completions at a time. 
This variable is &lsquo;<samp><span class="samp">on</span></samp>&rsquo; by default.

          <br><dt><code>print-completions-horizontally</code><dd>If set to &lsquo;<samp><span class="samp">on</span></samp>&rsquo;, Readline will display completions with matches
sorted horizontally in alphabetical order, rather than down the screen. 
The default is &lsquo;<samp><span class="samp">off</span></samp>&rsquo;.

          <br><dt><code>revert-all-at-newline</code><dd><a name="index-revert_002dall_002dat_002dnewline-3215"></a>If set to &lsquo;<samp><span class="samp">on</span></samp>&rsquo;, Readline will undo all changes to history lines
before returning when <code>accept-line</code> is executed.  By default,
history lines may be modified and retain individual undo lists across
calls to <code>readline</code>.  The default is &lsquo;<samp><span class="samp">off</span></samp>&rsquo;.

          <br><dt><code>show-all-if-ambiguous</code><dd><a name="index-show_002dall_002dif_002dambiguous-3216"></a>This alters the default behavior of the completion functions.  If
set to &lsquo;<samp><span class="samp">on</span></samp>&rsquo;,
words which have more than one possible completion cause the
matches to be listed immediately instead of ringing the bell. 
The default value is &lsquo;<samp><span class="samp">off</span></samp>&rsquo;.

          <br><dt><code>show-all-if-unmodified</code><dd><a name="index-show_002dall_002dif_002dunmodified-3217"></a>This alters the default behavior of the completion functions in
a fashion similar to <var>show-all-if-ambiguous</var>. 
If set to &lsquo;<samp><span class="samp">on</span></samp>&rsquo;,
words which have more than one possible completion without any
possible partial completion (the possible completions don't share
a common prefix) cause the matches to be listed immediately instead
of ringing the bell. 
The default value is &lsquo;<samp><span class="samp">off</span></samp>&rsquo;.

          <br><dt><code>skip-completed-text</code><dd><a name="index-skip_002dcompleted_002dtext-3218"></a>If set to &lsquo;<samp><span class="samp">on</span></samp>&rsquo;, this alters the default completion behavior when
inserting a single match into the line.  It's only active when
performing completion in the middle of a word.  If enabled, readline
does not insert characters from the completion that match characters
after point in the word being completed, so portions of the word
following the cursor are not duplicated. 
For instance, if this is enabled, attempting completion when the cursor
is after the &lsquo;<samp><span class="samp">e</span></samp>&rsquo; in &lsquo;<samp><span class="samp">Makefile</span></samp>&rsquo; will result in &lsquo;<samp><span class="samp">Makefile</span></samp>&rsquo;
rather than &lsquo;<samp><span class="samp">Makefilefile</span></samp>&rsquo;, assuming there is a single possible
completion. 
The default value is &lsquo;<samp><span class="samp">off</span></samp>&rsquo;.

          <br><dt><code>visible-stats</code><dd><a name="index-visible_002dstats-3219"></a>If set to &lsquo;<samp><span class="samp">on</span></samp>&rsquo;, a character denoting a file's type
is appended to the filename when listing possible
completions.  The default is &lsquo;<samp><span class="samp">off</span></samp>&rsquo;.

     </dl>

     <br><dt>Key Bindings<dd>The syntax for controlling key bindings in the init file is
simple.  First you need to find the name of the command that you
want to change.  The following sections contain tables of the command
name, the default keybinding, if any, and a short description of what
the command does.

     <p>Once you know the name of the command, simply place on a line
in the init file the name of the key
you wish to bind the command to, a colon, and then the name of the
command. 
There can be no space between the key name and the colon &ndash; that will be
interpreted as part of the key name. 
The name of the key can be expressed in different ways, depending on
what you find most comfortable.

     <p>In addition to command names, readline allows keys to be bound
to a string that is inserted when the key is pressed (a <var>macro</var>).

          <dl>
<dt><var>keyname</var>:&nbsp;<var>function-name</var>&nbsp;or&nbsp;<var>macro</var><!-- /@w --><dd><var>keyname</var> is the name of a key spelled out in English.  For example:
          <pre class="example">               Control-u: universal-argument
               Meta-Rubout: backward-kill-word
               Control-o: "&gt; output"
</pre>
          <p>In the above example, <kbd>C-u</kbd> is bound to the function
<code>universal-argument</code>,
<kbd>M-DEL</kbd> is bound to the function <code>backward-kill-word</code>, and
<kbd>C-o</kbd> is bound to run the macro
expressed on the right hand side (that is, to insert the text
&lsquo;<samp><span class="samp">&gt; output</span></samp>&rsquo; into the line).

          <p>A number of symbolic character names are recognized while
processing this key binding syntax:
<var>DEL</var>,
<var>ESC</var>,
<var>ESCAPE</var>,
<var>LFD</var>,
<var>NEWLINE</var>,
<var>RET</var>,
<var>RETURN</var>,
<var>RUBOUT</var>,
<var>SPACE</var>,
<var>SPC</var>,
and
<var>TAB</var>.

          <br><dt>"<var>keyseq</var>":&nbsp;<var>function-name</var>&nbsp;or&nbsp;<var>macro</var><!-- /@w --><dd><var>keyseq</var> differs from <var>keyname</var> above in that strings
denoting an entire key sequence can be specified, by placing
the key sequence in double quotes.  Some <span class="sc">gnu</span> Emacs style key
escapes can be used, as in the following example, but the
special character names are not recognized.

          <pre class="example">               "\C-u": universal-argument
               "\C-x\C-r": re-read-init-file
               "\e[11~": "Function Key 1"
</pre>
          <p>In the above example, <kbd>C-u</kbd> is again bound to the function
<code>universal-argument</code> (just as it was in the first example),
&lsquo;<samp><kbd>C-x</kbd> <kbd>C-r</kbd></samp>&rsquo; is bound to the function <code>re-read-init-file</code>,
and &lsquo;<samp><span class="samp">&lt;ESC&gt; &lt;[&gt; &lt;1&gt; &lt;1&gt; &lt;~&gt;</span></samp>&rsquo; is bound to insert
the text &lsquo;<samp><span class="samp">Function Key 1</span></samp>&rsquo;.

     </dl>

     <p>The following <span class="sc">gnu</span> Emacs style escape sequences are available when
specifying key sequences:

          <dl>
<dt><kbd>\C-</kbd><dd>control prefix
<br><dt><kbd>\M-</kbd><dd>meta prefix
<br><dt><kbd>\e</kbd><dd>an escape character
<br><dt><kbd>\\</kbd><dd>backslash
<br><dt><kbd>\"</kbd><dd>&lt;"&gt;, a double quotation mark
<br><dt><kbd>\'</kbd><dd>&lt;'&gt;, a single quote or apostrophe
</dl>

     <p>In addition to the <span class="sc">gnu</span> Emacs style escape sequences, a second
set of backslash escapes is available:

          <dl>
<dt><code>\a</code><dd>alert (bell)
<br><dt><code>\b</code><dd>backspace
<br><dt><code>\d</code><dd>delete
<br><dt><code>\f</code><dd>form feed
<br><dt><code>\n</code><dd>newline
<br><dt><code>\r</code><dd>carriage return
<br><dt><code>\t</code><dd>horizontal tab
<br><dt><code>\v</code><dd>vertical tab
<br><dt><code>\</code><var>nnn</var><dd>the eight-bit character whose value is the octal value <var>nnn</var>
(one to three digits)
<br><dt><code>\x</code><var>HH</var><dd>the eight-bit character whose value is the hexadecimal value <var>HH</var>
(one or two hex digits)
</dl>

     <p>When entering the text of a macro, single or double quotes must
be used to indicate a macro definition. 
Unquoted text is assumed to be a function name. 
In the macro body, the backslash escapes described above are expanded. 
Backslash will quote any other character in the macro text,
including &lsquo;<samp><span class="samp">"</span></samp>&rsquo; and &lsquo;<samp><span class="samp">'</span></samp>&rsquo;. 
For example, the following binding will make &lsquo;<samp><kbd>C-x</kbd><span class="samp"> \</span></samp>&rsquo;
insert a single &lsquo;<samp><span class="samp">\</span></samp>&rsquo; into the line:
     <pre class="example">          "\C-x\\": "\\"
</pre>
     </dl>

   </body></html>

