Editing
The linenoise-based CLI editor is available for macOS, Linux and Windows.
DuckDB’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. You can also view these shortcuts from within the CLI using .help shortcuts.
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+Q, then click |
Move cursor to mouse click position |
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 DUCKDB_EDITOR, EDITOR or VISUAL (in that order). If none are set, vi is used.
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 " duckdb -batch