# Keybindings

Keyboard shortcuts in Voxcode interactive mode are optimized for fast terminal workflows.

## Core Input and Submission

| Shortcut | Action |
| --- | --- |
| `Enter` | Submit current input |
| `Shift+Enter` | Insert newline in editor |
| `Ctrl+C` | Cancel current running action |
| `Tab` | Trigger completions / navigate suggestions |

## History and Navigation

| Shortcut | Action |
| --- | --- |
| `Up` / `Down` | Navigate input/session history |
| `Ctrl+P` / `Ctrl+N` | Previous/next history item (terminal dependent) |
| `PageUp` / `PageDown` | Scroll long output (terminal dependent) |

## Editor Controls

| Shortcut | Action |
| --- | --- |
| `Ctrl+A` | Move cursor to line start |
| `Ctrl+E` | Move cursor to line end |
| `Ctrl+K` | Delete to end of line |
| `Ctrl+U` | Delete to start of line |
| `Alt+Backspace` | Delete previous word |

## Selection and Confirm UI

| Shortcut | Action |
| --- | --- |
| `Up` / `Down` | Move selection |
| `Enter` | Confirm selection |
| `Esc` | Cancel selection/dialog |

## Custom Keybindings

Keybindings can be configured in `settings.json`:

```json
{
  "keybindings": {
    "submit": "Enter",
    "cancel": "Ctrl+C",
    "newline": "Shift+Enter",
    "historyPrev": "Up",
    "historyNext": "Down",
    "wordBack": "Alt+Backspace"
  }
}
```

Not all terminals support every key combination. Test custom bindings in your target terminal before standardizing on a team-wide config.

> [!NOTE]
> Exact key behavior depends on terminal emulator, shell, and multiplexer setup. If shortcuts behave unexpectedly, check [terminal-setup.md](terminal-setup.md) and [tmux.md](tmux.md).
