Add configurable readline-style text transformations to TUI prompt · Issue #9234 · anomalyco/opencode · GitHub
Skip to content

Add configurable readline-style text transformations to TUI prompt #9234

Closed

Description

@aspiers

Feature hasn't been suggested before.

  • I have verified this feature I'm about to request hasn't been suggested before.

Describe the enhancement you want to request

Summary

Add configurable Emacs/readline-style text editing shortcuts to the TUI (terminal) prompt input to improve text editing efficiency and provide power users with familiar keybindings.

Problem Statement

Currently, users working in the terminal UI must manually retype text to perform common text editing operations such as:

  • Changing word case (uppercase, lowercase, capitalize)
  • Pasting previously deleted text
  • Transposing characters

This slows down text editing workflows and prevents users from customizing keybindings to match their preferred editor shortcuts (particularly Emacs/readline style).

Desired Features

The following text transformation operations should be available as configurable keybindings:

Case Transformations

  • Uppercase word - Convert word from cursor position to uppercase
  • Lowercase word - Convert word from cursor position to lowercase
  • Capitalize word - Capitalize word from cursor position

Kill Ring / Paste Buffer

  • Yank - Paste the last deleted text at cursor position
  • Support for storing deleted text from existing delete operations (ctrl+k, ctrl+u, ctrl+w, alt+d)

Character Manipulation

  • Transpose characters - Swap character under cursor with previous character

Expected Behavior

All new shortcuts should be fully configurable via opencode.json keybindings configuration, allowing users to customize or disable them as needed. Default bindings should not conflict with existing TUI functionality.

Example Configuration

{
  "keybinds": {
    "input_lowercase_word": "alt+l",
    "input_uppercase_word": "alt+u",
    "input_capitalize_word": "alt+c",
    "input_yank": "ctrl+y",
    "input_transpose_characters": "ctrl+t"
  }
}

Implementation Notes

  • Word boundary detection should follow readline/Emacs behavior
  • Case transformations should respect word boundaries
  • Kill buffer could start as a simple single-entry buffer with future expansion to a full kill ring
  • Tests should verify word boundary detection and transformation functions

Activity

  1. added
    discussionUsed for feature requests, proposals, ideas, etc. Open discussion
    on Jan 18, 2026
  2. added
    opentuiThis relates to changes in v1.0, now that opencode uses opentui
    on Jan 18, 2026
  3. github-actions commented on Jan 18, 2026

    @github-actions
    Contributor

    This issue might be a duplicate of existing issues. Please check:

    For keybind-related issues, please also check our pinned keybinds documentation: #4997

    Feel free to ignore if none of these address your specific case.

  4. aspiers commented on Feb 12, 2026

    @aspiers
    ContributorAuthor

    It's not a duplicate and the PR fixing this is ready for review.

  5. github-actions commented on Apr 13, 2026

    @github-actions
    Contributor

    To stay organized issues are automatically closed after 90 days of no activity. If the issue is still relevant please open a new one.

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

Metadata

Metadata

Assignees

Labels

discussionUsed for feature requests, proposals, ideas, etc. Open discussionopentuiThis 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