# Change keybindings

Canonical HTML: [Change keybindings](https://getred.dev/docs/keybindings). Website source: `b212874eefaf200143affa21c770fbb8855a4f5c`. Documented Red release: v0.9.1. Installer source: `b86a2ca4b92e9547d3b174910c82db8a259f5171`.

Map actions, action sequences, chords, and plugin commands without changing how keys behave in other modes.

<a id="find-the-current-binding-first"></a>

## Find the current binding first

Press `F1` for keyboard help in the current context, or `Space ?` for the command palette. Both surfaces show effective bindings after your overrides are applied.

<a id="map-an-action"></a>

## Map an action

```toml
[keys.normal]
"Ctrl-s" = "Save"
"u" = "Undo"

[keys.insert]
"Ctrl-s" = "Save"
```

Each mode has its own table. A Normal-mode mapping doesn't change what the same key types in Insert mode.

<a id="use-sequences-chords-and-plugin-commands"></a>

## Use sequences, chords, and plugin commands

```toml
[keys.normal]
"a" = [{ EnterMode = "Insert" }, "MoveRight"]
"g" = { "d" = "GoToDefinition" }
"Ctrl-j" = { PluginCommand = "BufferPicker" }
```

Normal-mode bindings are inherited by Visual modes unless you add an explicit binding under `[keys.visual]`. Red rejects ambiguous plugin leader mappings instead of silently discarding one.

<a id="control-prefix-hints"></a>

## Control prefix hints

```toml
[key_hints]
enabled = true
delay_ms = 250
```

Pause after a configured prefix such as `Space`, `Ctrl-w`, or `g` to see the available continuations.

<a id="diagnose-terminal-shortcuts"></a>

## Diagnose terminal shortcuts

```shell
red keys
```

The diagnostic shows how the current terminal reports key combinations without opening a document or starting Codex. Use `Ctrl+J` as the portable newline in Agent composers when a terminal doesn't distinguish modified Enter keys.
