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

Open
opened 2026-02-16 18:04:58 -05:00 by yindo · 2 comments
Owner

Originally created by @aspiers on GitHub (Jan 18, 2026).

Originally assigned to: @kommander on GitHub.

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
Originally created by @aspiers on GitHub (Jan 18, 2026). Originally assigned to: @kommander on GitHub. ### Feature hasn't been suggested before. - [x] 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 ```json { "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
yindo added the opentuidiscussion labels 2026-02-16 18:04:58 -05:00
Author
Owner

@github-actions[bot] commented on GitHub (Jan 18, 2026):

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

  • #4997: Pinned keybinds issue covering many TUI keybind problems including word deletion (option+delete), emacs bindings (ctrl+a, ctrl+k), and general keybind navigation issues
  • #7098: yank (ctrl-y) does not work - directly related to the proposed 'input_yank' functionality
  • #4938: Keyboard shortcuts to edit prompts suck - covers broader text editing and navigation issues in TUI input
  • #4877: Emacs keybindings frustratingly inconsistent - related to emacs-style keybindings support
  • #7516: feat: add keyboard-based copy/cut for input field selection - related functionality for input text manipulation

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

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

@github-actions[bot] commented on GitHub (Jan 18, 2026): This issue might be a duplicate of existing issues. Please check: - #4997: Pinned keybinds issue covering many TUI keybind problems including word deletion (option+delete), emacs bindings (ctrl+a, ctrl+k), and general keybind navigation issues - #7098: yank (ctrl-y) does not work - directly related to the proposed 'input_yank' functionality - #4938: Keyboard shortcuts to edit prompts suck - covers broader text editing and navigation issues in TUI input - #4877: Emacs keybindings frustratingly inconsistent - related to emacs-style keybindings support - #7516: feat: add keyboard-based copy/cut for input field selection - related functionality for input text manipulation For keybind-related issues, please also check our pinned keybinds documentation: #4997 Feel free to ignore if none of these address your specific case.
Author
Owner

@aspiers commented on GitHub (Feb 11, 2026):

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

@aspiers commented on GitHub (Feb 11, 2026): It's not a duplicate and the PR fixing this is ready for review.
Sign in to join this conversation.
1 Participants
Notifications
Due Date
No due date set.
Dependencies

No dependencies set.

Reference: anomalyco/opencode#6691