Vim-like navigation mode for the OpenCode TUI session view.
After the package is published to npm:
opencode plugin opencode-session-navigationOr use the shorter alias:
opencode plug opencode-session-navigationYou can also add it manually to your OpenCode TUI config, tui.json:
{
"plugin": ["opencode-session-navigation"]
}For local development from this repository, add the local path to tui.json:
{
"plugin": ["/absolute/path/to/opencode-session-navigation"]
}When the current session is idle, press Escape to enter navigation mode. The prompt blurs and a small NAV indicator appears on the right side of the session prompt.
Default keys:
| Key | Action |
|---|---|
Escape |
Enter navigation mode |
i, a, Return |
Exit navigation mode and refocus the prompt |
j / k |
Scroll down/up one line |
Ctrl+d / Ctrl+u |
Scroll down/up half a page |
Ctrl+f / Ctrl+b |
Scroll down/up a page |
gg |
Jump to the first message |
G |
Jump to the bottom/latest output |
n |
Jump to the next user message |
N or p |
Jump to the previous user message |
Navigation mode is ignored while a session is running, while a dialog is open, or while permission/question prompts are pending.
You can override keys through plugin options:
{
"plugin": [
[
"opencode-session-navigation",
{
"keybinds": {
"enter": "escape",
"exit": ["i", "a", "return"],
"lineDown": "j",
"lineUp": "k",
"halfPageDown": "ctrl+d",
"halfPageUp": "ctrl+u",
"pageDown": "ctrl+f",
"pageUp": "ctrl+b",
"first": "gg",
"last": "shift+g",
"nextMessage": "n",
"previousMessage": ["shift+n", "p"]
},
"indicator": "NAV"
}
]
]
}Set any keybind to false to disable it. Set indicator to false to hide the prompt indicator.
Message jumps work with current OpenCode builds and include a fallback for older builds where needed.
npm install
npm run typecheck
npm run build
npm pack