Skip to content

ZSH widget doesn't work with VI mode #900

@LukasKnuth

Description

@LukasKnuth

Might be (probably is) related to #328

Describe the bug
The expected CTRL-G keymap does not do anything.

To Reproduce

  1. Setup ZSH (I'm also using oh-my-zsh)
  2. Install the https://github.com/jeffreytse/zsh-vi-mode plugin
  3. Run eval "$(navi widget zsh)" at the end of .zshrc
  4. Start console emulator (I'm using Alacritty)

Expected behavior
Pressing CTRL-G opens the Navi widget.

Versions:

  • OS: macOS 14.5 (23F79)
  • zsh 5.9 (x86_64-apple-darwin23.0)
  • navi 2.23.0

Additional context

  • When I run bindkey after everything is sourced, I can see that another command is bound to the ^g shortcut
  • When I run the eval line again manually once the shell accepts input, everything works as expected
  • If I remove the zsh-vi-mode plugin from my ZSH, everything works as expected

Speculation

What fixes this problem for me at the moment is setting the specific keymap when binding the key:

eval "$(navi widget zsh)"
bindkey -M viins '^g' _navi_widget

I think this happens because the zsh-vi-mode plugin changes the zsh input to VI mode. Perhaps this does not set a default keymap, so the command output by navi widget zsh (which doesn't specify a keymap) isn't added anywhere. The more specific command I added does override the binding as expected.

Metadata

Metadata

Assignees

No one assigned

    Labels

    bugSomething isn't working

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions