【问题标题】:bindkey vi-cmd-mode causes other bindings to be unrecognized after exiting command modebindkey vi-cmd-mode 导致退出命令模式后其他绑定无法识别
【发布时间】:2015-07-18 00:19:42
【问题描述】:

我在 zsh 中,并且已经使用 bindkey -v 在 zsh 中使用 vi 键映射。我经常用<C-W>删除前面的单词,但是当我输入<esc>进入普通模式/vi-cmd-mode,然后用ia回到插入模式,我就不能再用了像<C-W> 这样的绑定,直到我运行一个新命令。无论如何,在进入正常模式然后回到插入模式后,我仍然可以使用来自 bindkey 的绑定吗?谢谢!

这是bindkey的输出:

"^A"-"^C" self-insert
"^D" list-choices
"^E" "^[a ^[dbxxa"
"^F" self-insert
"^G" list-expand
"^H" vi-backward-delete-char
"^I" expand-or-complete
"^J" accept-line
"^K" self-insert
"^L" clear-screen
"^M" accept-line
"^N"-"^P" self-insert
"^Q" vi-quoted-insert
"^R" redisplay
"^S"-"^T" self-insert
"^U" vi-kill-line
"^V" vi-quoted-insert
"^W" vi-backward-kill-word
"^X"-"^Z" self-insert
"^[" vi-cmd-mode
"^[OA" up-line-or-search
"^[OB" down-line-or-search
"^[OC" vi-forward-char
"^[OD" vi-backward-char
"^[[A" up-line-or-history
"^[[B" down-line-or-history
"^[[C" vi-forward-char
"^[[D" vi-backward-char
"^\\\\"-"~" self-insert
"^?" vi-backward-delete-char
"\M-^@"-"\M-^?" self-insert

【问题讨论】:

    标签: zsh vi key-bindings


    【解决方案1】:

    小部件vi-backward-kill-word(在vi-ins模式下默认绑定到Control+W)只删除备份到您上次进入插入模式的位置。因此,仅当您实际上没有输入更多文本时,它似乎才不起作用。

    一个简单的解决方法是改用小部件backward-kill-word。您只需重新映射 Control+W 的键绑定(这需要在 bindkey -v 之后完成):

    bindkey -v
    bindkey '^W' backward-kill-word
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2019-06-08
      • 2018-12-19
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2023-03-30
      • 2014-11-29
      相关资源
      最近更新 更多