Search documentation of erts

# View Source tty - A Command-Line Interface

`tty` is a simple command-line interface program where keystrokes are collected and interpreted. Completed lines are sent to the shell for interpretation. A simple history mechanism saves previous lines, which can be edited before sending them to the shell. `tty` is started when Erlang is started with the following command:

    erl

`tty` operates in several different modes:

- Normal mode, in which text lines can be edited and sent to the shell.
- Search mode, in which the user can search for previous commands in the history buffer.
- Shell break mode, which allows the user to kill the current shell, start multiple shells, and so on.

## Normal Mode

In normal mode keystrokes from the user are collected and interpreted by `tty`. Most of the Emacs line-editing commands are supported. The following is a complete list of the supported line-editing commands.

Typographic conventions:

- `C-a` means pressing the Ctrl key and the letter `a` simultaneously.
- `C-S-a` means pressing the Ctrl key, the Shift key, and the letter `a` simultaneously.
- `M-f` means pressing the Esc key and the letter `f` in sequence or pressing the Alt key and the letter `f` simultaneously.
- `Home` and `End` represent the keys with the same name on the keyboard.
- `Left`, `Right`, `Up` and `Down` represent the corresponding arrow keys.
- When a function has multiple possible key sequences they are listed on individual lines in the `Key Sequence` column.

Key Sequence | Function
--- | ---
`Home` | Beginning of line
`C-a` | Beginning of line
`C-b` | Backward character
`C-Left` or `M-Left` | Backward word
`M-b` | Backward word
`C-d` | Delete character
`M-d` | Delete word
`End` | End of line
`C-e` | End of line
`C-f` | Forward character
`C-Right` or `M-Right` | Forward word
`M-f` | Forward word
`C-g` | Enter shell break mode
`C-k` | Kill line
`C-u` | Backward kill line
`C-l` | Clears the screen
`M-c` | Clears the current expression
`M-l` | Redraw line
`C-n` | Fetch next line from the history buffer
`C-o` or `M-o` | Edit the current line using the editor specified in the environment variable `VISUAL` or `EDITOR`. The environment variables can contain arguments to the editor if needed, for example `VISUAL="emacs -nw"`. On Windows the editor cannot be a console based editor.
`C-p` | Fetch previous line from the history buffer
`M-r` | Format current expression using `shell:format_shell_func/1`
`C-r` | Enter search mode and then search backward in the shell history
`C-s` | In search mode, search forward in the shell history
`C-t` | Transpose characters
`C-w` | Backward kill word
`C-y` | Insert previously killed text
`C-]` | Insert matching closing bracket
`C-Up` or `M-Up` | Navigate one row up when editing multiple lines
`C-Down` or `M-Down` | Navigate one row down when editing multiple lines
`M-Enter` | Insert a new line at cursor
`M-<` or `M-S-Up` | Navigate to the start of the current expression
`M->` or `M-S-Down` | Navigate to the end of the current expression
`Tab` or `C-i` | Autocomplete current expression, or show completion suggestions
`M-c` | Clear current expression
`M-h` | Display help for the module or function closest on the left of the cursor.
`PageUp` | Scroll the expand, search or help buffer 5 lines upwards.
`PageDown` | Scroll the expand, search or help buffer 5 lines downwards.

Table: tty Text Editing

## Shell Break Mode

In this mode the following can be done:

- Kill or suspend the current shell
- Connect to a suspended shell
- Start a new shell

← Previous Page The Abstract Format
Next Page → How to Implement a Driver