Editing
The linenoise-based CLI editor is currently only available for macOS and Linux.
Goose's CLI uses a line-editing library based on linenoise, which has shortcuts that are based on Emacs mode of readline. Below is a list of available commands.
Moving
| Key | Action |
|---|---|
Left | Move back a character |
Right | Move forward a character |
Up | Move up a line. When on the first line, move to previous history entry |
Down | Move down a line. When on last line, move to next history entry |
Home | Move to beginning of buffer |
End | Move to end of buffer |
Ctrl+Left | Move back a word |
Ctrl+Right | Move forward a word |
Ctrl+A | Move to beginning of buffer |
Ctrl+B | Move back a character |
Ctrl+E | Move to end of buffer |
Ctrl+F | Move forward a character |
Alt+Left | Move back a word |
Alt+Right | Move forward a word |
History
| Key | Action |
|---|---|
Ctrl+P | Move to previous history entry |
Ctrl+N | Move to next history entry |
Ctrl+R | Search the history |
Ctrl+S | Search the history |
Alt+< | Move to first history entry |
Alt+> | Move to last history entry |
Alt+N | Search the history |
Alt+P | Search the history |
Changing Text
| Key | Action |
|---|---|
Backspace | Delete previous character |
Delete | Delete next character |
Ctrl+D | Delete next character. When buffer is empty, end editing |
Ctrl+H | Delete previous character |
Ctrl+K | Delete everything after the cursor |
Ctrl+T | Swap current and next character |
Ctrl+U | Delete all text |
Ctrl+W | Delete previous word |
Alt+C | Convert next word to titlecase |
Alt+D | Delete next word |
Alt+L | Convert next word to lowercase |
Alt+R | Delete all text |
Alt+T | Swap current and next word |
Alt+U | Convert next word to uppercase |
Alt+Backspace | Delete previous word |
Alt+\ | Delete spaces around cursor |
Completing
| Key | Action |
|---|---|
Tab | Autocomplete. When autocompleting, cycle to next entry |
Shift+Tab | When autocompleting, cycle to previous entry |
Esc+Esc | When autocompleting, revert autocompletion |
Miscellaneous
| Key | Action |
|---|---|
Enter | Execute query. If query is not complete, insert a newline at the end of the buffer |
Ctrl+J | Execute query. If query is not complete, insert a newline at the end of the buffer |
Ctrl+C | Cancel editing of current query |
Ctrl+G | Cancel editing of current query |
Ctrl+L | Clear screen |
Ctrl+O | Cancel editing of current query |
Ctrl+X | Insert a newline after the cursor |
Ctrl+Z | Suspend CLI and return to shell, use fg to re-open |
External Editor Mode
Use .edit or \e to open a query in an external text editor.
- When entered alone, it opens the previous command for editing.
- When used inside a multi-line command, it opens the current command in the editor.
The editor is taken from the first set environment variable among GOOSE_EDITOR, EDITOR or VISUAL (in that order). If none are set, vi is used.
This feature is only available in the linenoise-based CLI editor, which is currently supported on macOS and Linux.
Using Read-Line
If you prefer, you can use rlwrap to use read-line directly with the shell. Then, use Shift+Enter to insert a newline and Enter to execute the query:
rlwrap --substitute-prompt="D " goose -batch