zsh vi 模式:浏览最近使用的命令

zsh vi 模式:浏览最近使用的命令

我最近在 zsh 中切换到 vi 模式,并且 emacs 模式中有一个功能,我无法找到如何在 vi 模式下执行此功能。该功能是按行浏览历史记录,从我已经输入的内容开始。例如,如果我键入vi并按然后我浏览以 开头的最近命令vi。甚至可以使用 vi 模式吗?

答案1

emacs 模式vi模式只是按键绑定的不同预设。任何小部件都可以在任何模式下绑定。

这里讨论的小部件是history-beginning-search-backward(大概用于) 和history-beginning-search-forward(用于)。

要将它们绑定到模式下的向上和向下键vicmd,您只需运行

bindkey '^[[A' history-beginning-search-backward
bindkey '^[[B' history-beginning-search-forward
  • 注 1:这会覆盖这些键的默认设置。
  • 注 2:^[[A^[[B可能不是您的终端的正确代码。

    • Ctrl通过按+v和有问题的键来查找正确的键。
    • 或利用关联数组terminfo来检索正确的绑定(我感谢斯蒂芬·查泽拉斯他对此的评论):

      bindkey "$terminfo[kcuu1]" history-beginning-search-backward
      bindkey "$terminfo[kcud1]" history-beginning-search-backward
      

      kcuu1kcud1能力名称分别为。您可以从terminfo(5)联机帮助页 ( )获取可能的功能及其名称的列表man 5 terminfo。关联数组terminfo使用“Cap-name”列中的名称作为键。

相关内容