Answers:
当然,您不能再使用Ctrl+ R。如果您查阅《 Z Shell手册》,您会发现history-incremental-search-backward在emacs键盘图中,该窗口小部件只有一个键盘绑定。vi键映射中没有键绑定。
但是,您也可以从阅读手册(第18章)中找到,添加键绑定是使用bindkey命令的相当简单的练习:
bindkey "^R" history-incremental-search-backward
您甚至不必使用zle命令将小部件映射到shell函数,因为这是标准小部件。
如果您参考Z Shell Wiki上的相同问题的答案,则会看到用于将其专门添加到vi“命令”和“插入模式”键映射中的命令:
bindkey -M viins '^R' history-incremental-search-backward
bindkey -M vicmd '^R' history-incremental-search-backward
还要注意,正如garyjohn指出的那样,在vi“命令”键盘图中,/字符绑定到了vi-history-search-backward小部件。此窗口小部件与history-incremental-search-backward窗口小部件之间的区别在于,窗口小部件的行为一旦在历史记录搜索模式下便会应用。您会注意到以下几个区别:
history-incremental-search-backward会在main和vicmd映射之间切换vi-cmd-mode。即从emacs模式下,Esc按键或Ctrl+ XCtrl+ V键可在emacs和键图之间切换搜索模式vicmd。(调用history-incremental-search-backward从vicmd键盘映射这样麻烦,除非你绑定的东西vi-cmd-mode在vicmd键盘映射为好。)vi-history-search-backward将vi-cmd-mode小部件视为accept-line,并将结束搜索,然后重新输入您从中输入搜索的命令模式。即(使用默认绑定)/从命令模式进入搜索模式,Esc然后返回命令模式。history-incremental-search-backward,history-incremental-search-backward和vi-rev-repeat-search都可以识别。即(假设您已按上述方式更改了绑定)两个Ctrl+ R并N会搜索前一个匹配行。vi-history-search-backward,仅vi-rev-repeat-search可识别小部件。即(假设您已如上所述更改绑定)Ctrl+ R将导致发出哔声并被忽略。我更喜欢使用:
bindkey -M vicmd '/' history-incremental-search-backward
这样,我可以键入ESC /text并查看命令行。如果我想参加下一场比赛,请输入ESC n
garyjohn展示了一种Vim的方法,并JdeBP展示了如何获取Ctrl + R的快捷键!我将使用这两种方法并在以后接受答案。我将根据1)哪种方法对我来说更容易,以及2)哪种方法获得更多投票来做出决定。感谢你们俩!