在ZSH历史记录增量搜索模式中向后循环搜索


10

我最近切换了历史记录搜索,history-incremental-pattern-search-backward因为它允许搜索中使用模式。这是我的设置方式.zshrc

bindkey -M vicmd '/' history-incremental-pattern-search-backward

这很好用,但是我不知道如何从搜索菜单转到下一场比赛。

% cat foobarbaz.txt
bck-i-search: f*baz

是否有钥匙可以做到这一点?

Answers:


12

终于找到了正确的咒语。您需要在插入模式下映射模式搜索。这是我所缺少的:

# Search backwards and forwards with a pattern
bindkey -M vicmd '/' history-incremental-pattern-search-backward
bindkey -M vicmd '?' history-incremental-pattern-search-forward

# set up for insert mode too
bindkey -M viins '^R' history-incremental-pattern-search-backward
bindkey -M viins '^F' history-incremental-pattern-search-forward

我本来^B可以在插入模式下进行向后搜索,但是我已经将其映射到其他对象。所以,现在^R^F循环比赛。


-M命令做什么?在我的情况下,即使没有-M关键字这个伟大工程..
alpha_989

-M keymap告诉bindkey键盘映射表应用结合。我已经将其设置为插入模式和命令模式。
claytron '18 -4-9

感谢您的澄清。就我而言,我只有bindkey '^R' history-incremental-pattern-search-backward,它可以工作。我还在/zsh的vi普通模型中使用默认命令。这样,我可以搜索命令历史记录,一旦找到命令,它将在命令行中提供。然后,如有必要,我可以修改最后一个命令。
alpha_989 '18

'^R' history-incremental-pattern-search-backward另一方面,如果使用,它将使我进入与搜索字符串匹配的最后一个命令。但是,我还没有找到一种实际能够编辑命令的方法。在通过增量模式搜索找到与搜索字符串匹配的合适命令之后,是否可以按任何特定的组合键来编辑该命令?
alpha_989 '18

9

根据zshzlezsh 4.3.10 的手册页,默认情况下没有键绑定。您需要向isearch地图添加绑定,并且只有几个小部件可用。例如,您可以执行以下操作:

bindkey -M isearch '^R' history-incremental-search-backward
bindkey -M isearch '^S' history-incremental-search-forward

bindkey -l没有显示isearch地图
claytron 2010年

@claytron:必须是版本问题:isearch在4.3.10中是新版本,而history-incremental-pattern-search-backward在4.3.7中出现(如果我正确阅读了更改日志)。
吉尔(Gilles)“所以,别再邪恶了”,2010年

我正在使用4.3.10,不确定为什么不存在。虽然使用插入模式绑定对我有用。
粘土人
By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.