在 ZSH history-incremental-pattern-search-backward 中循环匹配

cla*_*ron 11 zsh history

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

bindkey -M vicmd '/' history-incremental-pattern-search-backward
Run Code Online (Sandbox Code Playgroud)

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

% cat foobarbaz.txt
bck-i-search: f*baz
Run Code Online (Sandbox Code Playgroud)

是否有一个键可以做到这一点?

cla*_*ron 13

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

# 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
Run Code Online (Sandbox Code Playgroud)

我会^B在插入模式下用于向后搜索,但我已将其映射到其他内容。因此,现在^R^F在比赛中循环。


Gil*_*il' 11

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

bindkey -M isearch '^R' history-incremental-search-backward
bindkey -M isearch '^S' history-incremental-search-forward
Run Code Online (Sandbox Code Playgroud)