Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Document readline keybindings #31256

Closed
wants to merge 5 commits into from
Closed
Show file tree
Hide file tree
Changes from 2 commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
121 changes: 120 additions & 1 deletion doc/api/readline.md
Original file line number Diff line number Diff line change
Expand Up @@ -293,7 +293,8 @@ added: v0.1.98

The `rl.write()` method will write either `data` or a key sequence identified
by `key` to the `output`. The `key` argument is supported only if `output` is
a [TTY][] text terminal.
a [TTY][] text terminal. See [TTY keybindings][] for a list of key
combinations.

If `key` is specified, `data` is ignored.

Expand Down Expand Up @@ -722,6 +723,123 @@ const { createInterface } = require('readline');
})();
```

## TTY keybindings
BridgeAR marked this conversation as resolved.
Show resolved Hide resolved

<table>
<tr>
<th>Keybindings</th>
<th>Description</th>
BridgeAR marked this conversation as resolved.
Show resolved Hide resolved
</tr>
<tr>
<td><code>ctrl</code> + <code>shift</code> + <code>backspace</code></td>
<td>Delete line left</td>
</tr>
<tr>
<td><code>ctrl</code> + <code>shift</code> + <code>delete</code></td>
<td>Delete line right</td>
</tr>
<tr>
<td><code>ctrl</code> + <code>c</code></td>
<td>Emit SIGINT</td>
BridgeAR marked this conversation as resolved.
Show resolved Hide resolved
</tr>
<tr>
<td><code>ctrl</code> + <code>h</code></td>
<td>Delete left</td>
</tr>
<tr>
<td><code>ctrl</code> + <code>d</code></td>
<td>Delete right or EOF</td>
BridgeAR marked this conversation as resolved.
Show resolved Hide resolved
</tr>
<tr>
<td><code>ctrl</code> + <code>u</code></td>
<td>Delete from current to line start</td>
BridgeAR marked this conversation as resolved.
Show resolved Hide resolved
</tr>
<tr>
<td><code>ctrl</code> + <code>k</code></td>
<td>Delete from current to end of line</td>
BridgeAR marked this conversation as resolved.
Show resolved Hide resolved
</tr>
<tr>
<td><code>ctrl</code> + <code>a</code></td>
<td>Go to start of line</td>
</tr>
<tr>
<td><code>ctrl</code> + <code>e</code></td>
<td>Go to to end of line</td>
</tr>
<tr>
<td><code>ctrl</code> + <code>b</code></td>
<td>Back one character</td>
</tr>
<tr>
<td><code>ctrl</code> + <code>f</code></td>
<td>Forward one character</td>
</tr>
<tr>
<td><code>ctrl</code> + <code>l</code></td>
<td>Clear screen</td>
</tr>
<tr>
<td><code>ctrl</code> + <code>n</code></td>
<td>Next history item</td>
</tr>
<tr>
<td><code>ctrl</code> + <code>p</code></td>
<td>Previous history item</td>
BridgeAR marked this conversation as resolved.
Show resolved Hide resolved
</tr>
<tr>
<td><code>ctrl</code> + <code>z</code></td>
<td>Moves running process into background. Type
<code>fg</code> and press <code>enter</code>
to return.</td>
</tr>
<tr>
<td><code>ctrl</code> + <code>w</code> or <code>ctrl</code>
+ <code>backspace</code></td>
<td>Delete backwards to a word boundary</td>
</tr>
<tr>
<td><code>ctrl</code> + <code>delete</code></td>
<td>Delete forward to a word boundary</td>
</tr>
<tr>
<td><code>ctrl</code> + <code>left</code></td>
<td>Word left </td>
BridgeAR marked this conversation as resolved.
Show resolved Hide resolved
</tr>
<tr>
<td><code>ctrl</code> + <code>right</code></td>
<td>Word right</td>
</tr>
<tr>
<td><code>meta</code> + <code>b</code></td>
<td>Word left</td>
</tr>
BridgeAR marked this conversation as resolved.
Show resolved Hide resolved
<tr>
<td><code>meta</code> + <code>f</code></td>
<td>Word right</td>
</tr>
BridgeAR marked this conversation as resolved.
Show resolved Hide resolved
<tr>
<td><code>meta</code> + <code>d</code> or <code>meta</code>
+ <code>delete</code></td>
<td>Delete word right</td>
</tr>
<tr>
<td><code>meta</code> + <code>backspace</code></td>
<td>Delete word left </td>
BridgeAR marked this conversation as resolved.
Show resolved Hide resolved
</tr>
</table>

Below bindings doesn't work on all platforms
BridgeAR marked this conversation as resolved.
Show resolved Hide resolved
1. ctrl + shift + backspace: doesn't work on Linux, Mac and Windows
2. ctrl + shift + delete: doesn't work on Linux and Mac
3. ctrl + d: doesn't work on Windows
4. ctrl + z: doesn't work on Windows
5. ctrl + backspace: doesn't work as expected on Windows
6. ctrl + delete: doesn't work on Mac
7. ctrl + left: doesn't work on Mac
8. ctrl + right: doesn't work on Mac
9. meta + delete: deosn't work on windows
10. meta + backspace: doesn't work on Mac

[`'SIGCONT'`]: readline.html#readline_event_sigcont
[`'SIGTSTP'`]: readline.html#readline_event_sigtstp
[`'line'`]: #readline_event_line
Expand All @@ -731,5 +849,6 @@ const { createInterface } = require('readline');
[`rl.close()`]: #readline_rl_close
[Readable]: stream.html#stream_readable_streams
[TTY]: tty.html
[TTY keybindings]: #readline_tty_keybindings
[Writable]: stream.html#stream_writable_streams
[reading files]: #readline_example_read_file_stream_line_by_line
3 changes: 3 additions & 0 deletions doc/api/repl.md
Original file line number Diff line number Diff line change
Expand Up @@ -68,6 +68,8 @@ The following key combinations in the REPL have these special effects:
variables. When pressed while entering other input, displays relevant
autocompletion options.

For a full list of special keys, refer to [TTY keybindings][].
BridgeAR marked this conversation as resolved.
Show resolved Hide resolved

### Default Evaluation

By default, all instances of [`repl.REPLServer`][] use an evaluation function
Expand Down Expand Up @@ -736,5 +738,6 @@ For an example of running a REPL instance over [curl(1)][], see:
[`repl.ReplServer`]: #repl_class_replserver
[`repl.start()`]: #repl_repl_start_options
[`util.inspect()`]: util.html#util_util_inspect_object_options
[TTY keybindings]: readline.html#readline_tty_keybindings
[curl(1)]: https://curl.haxx.se/docs/manpage.html
[stream]: stream.html