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)哪种方法获得更多投票来做出决定。感谢你们俩!