Keyboard shortcuts to edit prompts suck so much! · Issue #4938 · anomalyco/opencode · GitHub
Skip to content

Keyboard shortcuts to edit prompts suck so much! #4938

Closed

Description

@lcswillems

Description

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.

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.

OpenCode version

v1.0.123

Activity

  1. github-actions commented on Dec 1, 2025

    @github-actions
    Contributor

    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.

  2. ariane-emory commented on Dec 1, 2025

    @ariane-emory
    Contributor

    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.

  3. lcswillems commented on Dec 1, 2025

    @lcswillems
    Author

    @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.

  4. ariane-emory commented on Dec 1, 2025

    @ariane-emory
    Contributor

    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:

      "keybinds": {
        "model_cycle_recent_reverse": "alt+k",
        "model_cycle_recent": "alt+j",
        "command_list": "alt+x",
        "history_next": "ctrl+n",
        "history_previous": "ctrl+p",
        "session_child_cycle": "ctrl+right",
        "session_child_cycle_reverse": "ctrl+left",
      },

    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.

  5. added
    opentuiThis relates to changes in v1.0, now that opencode uses opentui
    on Dec 1, 2025
  6. lcswillems commented on Dec 2, 2025

    @lcswillems
    Author

    Thanks @ariane-emory for the help!! 🙏 🙏

  7. Nindaleth commented on Dec 11, 2025

    @Nindaleth
    Contributor

    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

  8. MilesNorton commented on Dec 11, 2025

    @MilesNorton

    @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

  9. Nindaleth commented on Dec 11, 2025

    @Nindaleth
    Contributor

    @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.

  10. Nindaleth commented on Dec 12, 2025

    @Nindaleth
    Contributor

    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.

  11. kommander commented on Dec 15, 2025

    @kommander
    Collaborator

    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/

  12. lcswillems commented on Dec 15, 2025

    @lcswillems
    Author

    @kommander For example, when I do "shift+enter" in Codex inside VSCode, I don't have this issue. Why?

  13. kommander commented on Dec 15, 2025

    @kommander
    Collaborator

    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.

  14. jdanbrown commented on Dec 15, 2025

    @jdanbrown
    Contributor

    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.

  15. lcswillems commented on Dec 16, 2025

    @lcswillems
    Author

    I've added this to my VSCode config and now it works!!

    {
        "key": "shift+enter",
        "command": "workbench.action.terminal.sendSequence",
        "args": {
          "text": "\u001B\u000A"
        },
        "when": "terminalFocus"
      },
    
  16. gitTerebi commented on Feb 1, 2026

    @gitTerebi

    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

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Metadata

Metadata

Assignees

Labels

bugSomething isn't workingopentuiThis relates to changes in v1.0, now that opencode uses opentui

Type

No type

Projects

No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions