edlin(3)

NAME
edlin - Line and input interpretter for the erlang shell.

DESCRIPTION

This module reads input, handles any escape sequences that have been configured via edlin_key and outputs action requests. The action requests are handled either by modules group or the user_drv.

  Key configuration

You can setup a custom key configuration that overrides the default key configuration. This is done by setting the stdlib application parameter shell_keymap before Erlang is started. If you want to have the same keymap in all Erlang shells you can do so by putting a config file in your user's home directory and then set ERL_FLAGS to load it at startup. For example:

    $ cat $HOME/.erlang_keymap.config
    [{stdlib,
      [{shell_keymap,
        #{ normal => #{ "\^[A" => clear } }
      }]
    }].
    $ ERL_FLAGS="-config $HOME/.erlang_keymap" erl

The current keymap configuration can be fetched through edlin:keymap(). If a custom keymap or keymap file is specified, then it will be merged with the default keymap.

The keymap is a map of maps where the keys in the parent map corresponds to different editing modes in the shell. The valid modes currently supported are normal and search.

The keys in the child maps are the escape sequences that are sent from the terminal when a key is pressed and each value is a valid action as seen below.

The default atom is used to specify that an action should happen when a key is pressed that does not have any mapping. Typically used to exit a mode.

See tty - A Command-Line Interface for more information about the default keymap.

  Actions

The commands below are the built-in action requests for switching input modes on the normal shell or navigating, or manipulating the line feed. The line feed supports multiple lines. auto_blink
    Automatically close the closest matching opening parenthesis.
backward_char
    Move backward one character.
backward_delete_char
    Delete the character behind the cursor.
backward_delete_word
    Delete the word behind the cursor.
backward_kill_line
    Delete all characters from the cursor to the beginning of the line and save them in the kill buffer.
backward_kill_word
    Delete the word behind the cursor and save it in the kill buffer.
backward_line
    Move backward one line.
backward_word
    Move backward one word.
beginning_of_expression
    Move to the beginning of the expression.
beginning_of_line
    Move to the beginning of the line.
clear
    Clear the screen.
clear_line
    Clear the current expression.
end_of_expression
    Move to the end of the expression.
end_of_line
    Move to the end of the line.
forward_char
    Move forward one character.
forward_delete_char
    Delete the character under the cursor.
forward_line
    Move forward one line.
forward_word
    Move forward one word.
help
    Display help for the module or function closest on the left of the cursor.
help_full
    Display the whole help text for the module or function closest on the left of the cursor.
history_down
    Move to the next item in the history.
history_up
    Move to the previous item in the history.
kill_line
    Delete all characters from the cursor to the end of the line and save them in the kill buffer.
kill_word
    Delete the word under the cursor and save it in the kill buffer.
move_expand_down
    Move down one line in the expand area e.g. help or tab completion pager.
move_expand_up
    Move up one line in the expand area e.g. help or tab completion pager.
new_line_finish
    Add a newline at the end of the line and try to evaluate the current expression.
newline
    Add a newline at the cursor position.
open_editor
    Open the current line in an editor e.g. EDITOR="code -w" opens a buffer in vs code. Note that you need to pass a flag to the editor so that it signals the shell when you close the buffer.
redraw_line
    Redraw the current line.
scroll_expand_down
    Scroll down five lines in the expand area e.g. help or tab completion pager.
scroll_expand_up
    Scroll up five lines in the expand area e.g. help or tab completion pager.
search_cancel
    Cancel the current search.
search_found
    Accept the current search result and submit it.
search_quit
    Accept the current search result, but edit it before submitting.
search
    Enter search mode, search the history.
skip_down
    Skip to the next line in the history that matches the current search expression.
skip_up
    Skip to the previous line in the history that matches the current search expression.
tab_expand_full
    Output all possible tab completions.
tab_expand_quit
    Go back to normal mode.
tab_expand
    Autocomplete the current word, or show 5 lines of possible completions.
transpose_char
    Swap the character behind the cursor with the one in front of it.
transpose_word
    Swap the word behind the cursor with the one in front of it.
yank
    Insert the contents of the kill buffer at the cursor position.

DATA TYPES

keymap() :: #{atom() => #{string() | default => atom()}}.

    A map of maps for each shell mode containing key, action pairs.

FUNCTIONS

keymap() -> keymap().

    Get the current keymap used in the shell. Each key in the parent map represents a shell mode e.g. normal or search. Each map associated with the shell modes contains key sequences represented as strings, paired with an action, which is one of the valid actions mentioned above.