Skip to content

fix: allow custom Enter keybindings in vi mode#982

Merged
WindSoilder merged 1 commit intonushell:mainfrom
andrewgazelka:fix-vi-enter-keybinding
Dec 14, 2025
Merged

fix: allow custom Enter keybindings in vi mode#982
WindSoilder merged 1 commit intonushell:mainfrom
andrewgazelka:fix-vi-enter-keybinding

Conversation

@andrewgazelka
Copy link
Contributor

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

Copy link
Contributor

@WindSoilder WindSoilder left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Sorry for wating, I looked into the logic and it's good. Let's land it and move forward.

@WindSoilder WindSoilder merged commit ceedfde into nushell:main Dec 14, 2025
6 checks passed
@andrewgazelka andrewgazelka deleted the fix-vi-enter-keybinding branch December 15, 2025 16:28
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.

2 participants

Comments