---
name: "editrc"
section: "5edit"
platform: "linux"
package: "libedit2"
version: "3.1-20250104-1"
release: "Debian 13 (Trixie)"
platforms: ["linux"]
url: "https://new.carta.tech/editrc/5edit"
---

# editrc(5edit)

configuration file for editline library

## NAME

**editrc** – configuration file for editline library

## SYNOPSIS

**editrc**

## DESCRIPTION

The **editrc** file defines various settings to be used by the [editline(3edit)](/editline/3edit.md) library.

The format of each line is:

\[*prog***:**\]*command* \[*arg* *...*\]

*command* is one of the [editline(3edit)](/editline/3edit.md) builtin commands. Refer to BUILTIN COMMANDS for more information.

*prog* is the program name string that a program defines when it calls [el\_init(3)](/el_init/3.md) to set up [editline(3edit)](/editline/3edit.md), which is usually *argv*\[0\]. *command* will be executed for any program which matches *prog*.

*prog* may also be a [regex(3)](/regex/3.md) style regular expression, in which case *command* will be executed for any program that matches the regular expression.

If *prog* is absent, *command* is executed for all programs.

## BUILTIN COMMANDS

The **editline** library has some builtin commands, which affect the way that the line editing and history functions operate. These are based on similar named builtins present in the [tcsh(1)](/tcsh/1.md) shell.

The following builtin commands are available:

- **bind** \[**-aeklrsv**\] \[*key* \[*command*\]\]

  Without options and arguments, list all bound keys and macros, and the editor command or input string to which each one is bound. If only *key* is supplied, show the binding for that key or macro. If *key* *command* is supplied, bind the editor *command* to that key or macro.

  The options are as follows:

  - **-a**

    List or change key bindings in the [vi(1)](/vi/1.md) mode alternate (command mode) key map.

  - **-e**

    Bind all keys to the standard GNU Emacs-like bindings.

  - **-k**

    *key* is interpreted as a symbolic arrow key name, which may be one of **up**, **down**, **left** or **right**.

  - **-l**

    List all editor commands and a short description of each.

  - **-r**

    Remove the binding of the key or macro *key*.

  - **-s**

    Define a keyboard macro rather than a key binding or command macro: *command* is taken as a literal string and appended to the input queue whenever *key* is typed. Bound keys and macros in *command* are themselves reinterpreted, and this continues for ten levels of interpretation.

  - **-v**

    Bind all keys to the standard [vi(1)](/vi/1.md)-like bindings.

    The [editline(7edit)](/editline/7edit.md) manual documents all editor commands and contains more information about macros and the input queue.

    *key* and *command* can contain control characters of the form ‘**^***character*’( e.g. ‘^A’), and the following backslashed escape sequences:

    - **\\a**

      Bell

    - **\\b**

      Backspace

    - **\\e**

      Escape

    - **\\f**

      Formfeed

    - **\\n**

      Newline

    - **\\r**

      Carriage return

    - **\\t**

      Horizontal tab

    - **\\v**

      Vertical tab

    - **\\***nnn*

      The ASCII character corresponding to the octal number *nnn*.

      ‘\\’ nullifies the special meaning of the following character, if it has any, notably ‘\\’ and ‘^’.

- **echotc** \[**-sv**\] *arg* *...*

  Exercise terminal capabilities given in *arg*. If *arg* is ‘baud’, ‘cols’, ‘lines’, ‘rows’, ‘meta’, or ‘tabs’, the value of that capability is printed, with “yes” or “no” indicating that the terminal does or does not have that capability.

  **-s** returns an empty string for non-existent capabilities, rather than causing an error. **-v** causes messages to be verbose.

- **edit** \[on \| off\]

  Enable or disable the **editline** functionality in a program.

- **history** list \| size *n* \| unique *n*

  The ‘list’ command lists all entries in the history. The ‘size’ command sets the history size to *n* entries. The ‘unique’ command controls if history should keep duplicate entries. If *n* is non zero, only keep unique history entries. If *n* is zero, then keep all entries (the default).

- **settc** *cap* *val*

  Set the terminal capability *cap* to *val*, as defined in [termcap(5)](/termcap/5.md). No sanity checking is done.

- **setty** \[**-a**\] \[**-d**\] \[**-q**\] \[**-x**\] \[**+***mode*\] \[**-***mode*\] \[*mode*\] \[*char***=***c*\]

  Control which tty modes that **editrc** won't allow the user to change. **-d**, **-q** or **-x** tells **setty** to act on the ‘edit’, ‘quote’ or ‘execute’ set of tty modes respectively; defaulting to **-x**.

  Without other arguments, **setty** lists the modes in the chosen set which are fixed on( **+***mode*) or off( **-***mode*). **-a** lists all tty modes in the chosen set regardless of the setting. With **+***mode*, **-***mode* or *mode*, fixes *mode* on or off or removes control of *mode* in the chosen set.

  **Setty** can also be used to set tty characters to particular values using *char***=***value*. If *value* is empty then the character is set to \_POSIX\_VDISABLE.

- **telltc**

  List the values of all the terminal capabilities (see [termcap(5)](/termcap/5.md)).

## ENVIRONMENT

- EDITRC

  Names the default configuration file for the [editline(3edit)](/editline/3edit.md) library.

## FILES

- *~/.editrc*

  Last resort user configuration file for the [editline(3edit)](/editline/3edit.md) library if no other file is specified.

## SEE ALSO

[editline(3edit)](/editline/3edit.md), [regex(3)](/regex/3.md), [termcap(5)](/termcap/5.md), [editline(7edit)](/editline/7edit.md)

## AUTHORS

The **editline** library was written by Christos Zoulas, and this manual was written by Luke Mewburn, with some sections inspired by [tcsh(1)](/tcsh/1.md).
