Skip to content

Conversation

@andrewgazelka
Copy link

@andrewgazelka andrewgazelka commented Dec 4, 2025

Summary

  • Vi mode now respects custom Enter keybindings instead of hardcoding ReedlineEvent::Enter
  • Makes vi mode consistent with emacs mode behavior

Problem

Previously, the Enter key in vi mode was handled before checking custom keybindings:

(_, KeyModifiers::NONE, KeyCode::Enter) => {
    self.mode = ViMode::Insert;
    ReedlineEvent::Enter
}

This meant users could not override Enter behavior in vi_insert or vi_normal modes. Custom keybindings like abbreviation expansion menus would work with Space but not Enter.

Solution

Check keybindings first via find_binding(), fall back to default Enter behavior only if no custom binding exists. This matches how emacs mode already handles Enter.

flowchart TD
    A[Enter key pressed in vi mode] --> B{Custom keybinding exists?}
    B -->|Yes| C[Execute custom binding]
    B -->|No| D[Default: ReedlineEvent::Enter]
Loading

Testing

Tested with nushell's abbreviation expansion menu - Enter now correctly triggers the menu before submitting, matching Space behavior.

Note

Made with claude code.

Previously, the Enter key in vi mode was hardcoded to return
ReedlineEvent::Enter before checking custom keybindings. This meant
users could not override Enter behavior in vi_insert or vi_normal modes,
unlike emacs mode which correctly checked keybindings first.

This fix makes vi mode consistent with emacs mode by checking
keybindings before falling back to default Enter behavior.

Fixes the issue where custom keybindings like abbreviation expansion
menus would work with Space but not Enter in vi mode.
@andrewgazelka andrewgazelka marked this pull request as ready for review December 4, 2025 16:30
@andrewgazelka
Copy link
Author

@sholderbach @fdncred - Would appreciate a review when you get a chance! This fix is blocking my ability to use nushell with vim-style fish abbreviations. Happy to make any changes needed.

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

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant