You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
{{ message }}
Repository navigation
Keyboard shortcuts to edit prompts suck so much! #4938
I'm in love with opencode! However, the editing experience for writting prompts (which is an essential piece of such a CLI) is very bad because a bunch of keyboard shortcuts don't work.
I can't navigate fast across a prompt (e.g. I want to edit a part of the prompt way ealier or way latter than where I am right now) and need to keep pressing "left" / "right" for a while:
I can't delete the word just after with ctrl+suppr. It deletes everything (before and after!!). The standard is ctrl+delete to delete the word before (it works) and ctrl+suppr to delete the word after. It doesn't work.
There are already a lot of issues on this subject, but they don't seem to be worked on at all, while it seems to be a very important matter. The single biggest reason I'm looking for alternatives to opencode is because the editing experience is so bad right now.
Context: I'm on Ubuntu and I use opencode in a terminal opened in VSCode.
These existing issues cover the keyboard navigation shortcut problems you're experiencing. Feel free to ignore if your case has additional specific requirements not addressed in these issues.
By default opencode uses the de-facto standard emacs/readline/MacOS style keybindings used by most other applications, such as alt+left/alt+right to move wordwise, alt+backspace to delete the word preceding point and ctrl+a/ctrl+e to move point to the start/end of input fields.
Preferred key bindings are ultimately a matter of individual user preference, and so far as I'm aware all of the keys you've mentioned can be re-bound in your opencode.jsonc file's "keybinds" property. If you prefer the strange keybindings that Windows prefers, there's nothing stopping you from configuring them right now. Not a bug, IMO.
@ariane-emory How could those keybinds be customized? They don't appear in the settings in opencode.jsonc or I missed them?
The market share of editors proposing ctrl+left, ctrl+right, etc (e.g. VSCode) is maybe an order of magnitude higher than the one of editors that propose alt+left, alt+right, alt+backspace, ctrl+a, ctrl+e, etc (e.g. emacs).
Furthermore, the common places for writting (e.g. Firefox, Chrome, Slack, etc) support the former keybinds rather than the later ones.
So very likely that people are in general way more likely to be used to the former ones than the later ones.
Reacted by Stefan Schwarzer, Sławek Piotrowski, aleksatodorovic, Huge, YossiMH, Lin Zhenwei, mi-v, Theodore Brown, intensite and Jason Dunham
If you'd like to figure out the names for particular commands, I've found that the best way to get those answers is to launch opencode in it's own source code's directory and ask it - any decent model will do, the free opencode/big-pickle is usually pretty great at answering this type of question.
@MilesNorton this is on Linux and Terminator terminal. I checked on Ghostty and shift+enter works there now, so it's just some terminals even on Linux.
From the default shortcuts of "shift+return,ctrl+return,alt+return,ctrl+j", I found the alt+enter also works in addition to ctrl+j to produce a newline in Terminator, I might use alt+enter in the meantime
I understand that the path forward is a more modern terminal, but I'm delaying the switch to Ghostty as it's not yet a clear improvement over Terminator.
shift+enter will only work in terminals that support modifyOtherKeys or kitty keyboard protocol, there is nothing opencode or opentui can do about that. Default navigation keybinds have been extended and all textarea text nav input_* bindings can now be customized, see https://opencode.ai/docs/keybinds/
Codex manipulates your vscode config and adds a custom keybinding sending a custom sequence that only Codex handles. Opencode will get some setup scripts to tweak terminal configs where possible, but as opt-in, to avoid surprises when conflicts happen, as has happened before with claude code manipulating the Ghostty config.
Codex manipulates your vscode config and adds a custom keybinding sending a custom sequence that only Codex handles. Opencode will get some setup scripts to tweak terminal configs where possible, but as opt-in, to avoid surprises when conflicts happen, as has happened before with claude code manipulating the Ghostty config.
Thank you for planning to make it opt-in! It's very frustrating when app A goes and quietly mucks with the config of app B without making it clear to the user what was changed, and how they can control it themselves.
Part of problem is that you are trying to edit in a CLI, it doesn't really like it if you try to copy output from it that spans multiple screens either
Activity
github-actions commentedon Dec 1, 2025
This issue might be a duplicate of existing issues. Please check:
These existing issues cover the keyboard navigation shortcut problems you're experiencing. Feel free to ignore if your case has additional specific requirements not addressed in these issues.
ariane-emory commentedon Dec 1, 2025
By default opencode uses the de-facto standard emacs/readline/MacOS style keybindings used by most other applications, such as
alt+left/alt+rightto move wordwise,alt+backspaceto delete the word preceding point andctrl+a/ctrl+eto move point to the start/end of input fields.Preferred key bindings are ultimately a matter of individual user preference, and so far as I'm aware all of the keys you've mentioned can be re-bound in your
opencode.jsoncfile's"keybinds"property. If you prefer the strange keybindings that Windows prefers, there's nothing stopping you from configuring them right now. Not a bug, IMO.lcswillems commentedon Dec 1, 2025
@ariane-emory How could those keybinds be customized? They don't appear in the settings in opencode.jsonc or I missed them?
The market share of editors proposing
ctrl+left,ctrl+right, etc (e.g. VSCode) is maybe an order of magnitude higher than the one of editors that proposealt+left,alt+right,alt+backspace,ctrl+a,ctrl+e, etc (e.g. emacs).Furthermore, the common places for writting (e.g. Firefox, Chrome, Slack, etc) support the former keybinds rather than the later ones.
So very likely that people are in general way more likely to be used to the former ones than the later ones.
ariane-emory commentedon Dec 1, 2025
Personally, I prefer my keyboard bindings to to be even more similar to emacs than opencode's defaults. So, I've got this in my
opencode.json:If you'd like to figure out the names for particular commands, I've found that the best way to get those answers is to launch opencode in it's own source code's directory and ask it - any decent model will do, the free
opencode/big-pickleis usually pretty great at answering this type of question.lcswillems commentedon Dec 2, 2025
Thanks @ariane-emory for the help!! 🙏 🙏
Nindaleth commentedon Dec 11, 2025
as of 1.0.147 this is much improved
the only remaining issue is that newline can only be entered by ctrl+j (while its other keybinds don't work); the rest seems to work for me now
MilesNorton commentedon Dec 11, 2025
@Nindaleth What OS and terminal are you using? I can use shift+enter to go to a new line and I can set the keybind ("input_newline") on linux
Nindaleth commentedon Dec 11, 2025
@MilesNorton this is on Linux and Terminator terminal. I checked on Ghostty and shift+enter works there now, so it's just some terminals even on Linux.
Nindaleth commentedon Dec 12, 2025
From the default shortcuts of
"shift+return,ctrl+return,alt+return,ctrl+j", I found the alt+enter also works in addition to ctrl+j to produce a newline in Terminator, I might use alt+enter in the meantimeI understand that the path forward is a more modern terminal, but I'm delaying the switch to Ghostty as it's not yet a clear improvement over Terminator.
kommander commentedon Dec 15, 2025
shift+enterwill only work in terminals that support modifyOtherKeys or kitty keyboard protocol, there is nothing opencode or opentui can do about that. Default navigation keybinds have been extended and all textarea text navinput_*bindings can now be customized, see https://opencode.ai/docs/keybinds/lcswillems commentedon Dec 15, 2025
@kommander For example, when I do "shift+enter" in Codex inside VSCode, I don't have this issue. Why?
kommander commentedon Dec 15, 2025
Codex manipulates your vscode config and adds a custom keybinding sending a custom sequence that only Codex handles. Opencode will get some setup scripts to tweak terminal configs where possible, but as opt-in, to avoid surprises when conflicts happen, as has happened before with claude code manipulating the Ghostty config.
jdanbrown commentedon Dec 15, 2025
Thank you for planning to make it opt-in! It's very frustrating when app A goes and quietly mucks with the config of app B without making it clear to the user what was changed, and how they can control it themselves.
lcswillems commentedon Dec 16, 2025
I've added this to my VSCode config and now it works!!
gitTerebi commentedon Feb 1, 2026
Part of problem is that you are trying to edit in a CLI, it doesn't really like it if you try to copy output from it that spans multiple screens either