#### 33.3.3 Sample Init File ¶

Here is an example of an inputrc file. This illustrates key binding, variable assignment, and conditional syntax.

    # This file controls the behaviour of line input editing for
    # programs that use the GNU Readline library.  Existing
    # programs include FTP, Bash, and GDB.
    #
    # You can re-read the inputrc file with C-x C-r.
    # Lines beginning with '#' are comments.
    #
    # First, include any system-wide bindings and variable
    # assignments from /etc/Inputrc
    $include /etc/Inputrc

    #
    # Set various bindings for emacs mode.

    set editing-mode emacs

    $if mode=emacs

    Meta-Control-h:	backward-kill-word	Text after the function name is ignored

    #
    # Arrow keys in keypad mode
    #
    #"\M-OD":        backward-char
    #"\M-OC":        forward-char
    #"\M-OA":        previous-history
    #"\M-OB":        next-history
    #
    # Arrow keys in ANSI mode
    #
    "\M-[D":        backward-char
    "\M-[C":        forward-char
    "\M-[A":        previous-history
    "\M-[B":        next-history
    #
    # Arrow keys in 8 bit keypad mode
    #
    #"\M-\C-OD":       backward-char
    #"\M-\C-OC":       forward-char
    #"\M-\C-OA":       previous-history
    #"\M-\C-OB":       next-history
    #
    # Arrow keys in 8 bit ANSI mode
    #
    #"\M-\C-[D":       backward-char
    #"\M-\C-[C":       forward-char
    #"\M-\C-[A":       previous-history
    #"\M-\C-[B":       next-history

    C-q: quoted-insert

    $endif

    # An old-style binding.  This happens to be the default.
    TAB: complete

    # Macros that are convenient for shell interaction
    $if Bash
    # edit the path
    "\C-xp": "PATH=${PATH}\e\C-e\C-a\ef\C-f"
    # prepare to type a quoted word --
    # insert open and close double quotes
    # and move to just after the open quote
    "\C-x\"": "\"\"\C-b"
    # insert a backslash (testing backslash escapes
    # in sequences and macros)
    "\C-x\\": "\\"
    # Quote the current or previous word
    "\C-xq": "\eb\"\ef\""
    # Add a binding to refresh the line, which is unbound
    "\C-xr": redraw-current-line
    # Edit variable on current line.
    "\M-\C-v": "\C-a\C-k$\C-y\M-\C-e\C-a\C-y="
    $endif

    # use a visible bell if one is available
    set bell-style visible

    # don't strip characters to 7 bits when reading
    set input-meta on

    # allow iso-latin1 characters to be inserted rather
    # than converted to prefix-meta sequences
    set convert-meta off

    # display characters with the eighth bit set directly
    # rather than as meta-prefixed characters
    set output-meta on

    # if there are 150 or more possible completions for a word,
    # ask whether or not the user wants to see all of them
    set completion-query-items 150

    # For FTP
    $if Ftp
    "\C-xg": "get \M-?"
    "\C-xt": "put \M-?"
    "\M-.": yank-last-arg
    $endif