ZSH widget doesn't work with VI mode
Opened this issue · 2 comments
Might be (probably is) related to #328
Describe the bug
The expected CTRL-G keymap does not do anything.
To Reproduce
- Setup ZSH (I'm also using oh-my-zsh)
- Install the https://github.com/jeffreytse/zsh-vi-mode plugin
- Run
eval "$(navi widget zsh)"
at the end of.zshrc
- 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.
Thanks for opening your first issue here! In case you're facing a bug, please update navi to the latest version first. Maybe the bug is already solved! :)
function zvm_after_lazy_keybindings() {
zvm_bindkey vicmd '^G' _navi_widget
}
function zvm_after_init() {
zvm_bindkey viins '^G' _navi_widget
}