有没有办法用多个搜索词来反向搜索 zsh 历史记录?

有没有办法用多个搜索词来反向搜索 zsh 历史记录?

我希望能够在 zsh 上进行反向搜索(CTRL+R),但使用多个搜索词来搜索命令。

例如,我想搜索包含“scp”和“hello”的命令。

我怀疑如果不直接在 中搜索就不可能实现.histfile

答案1

我不确定是否可以做到确切地您正在想什么,但您可以非常接近(至少足够接近以完成工作)。

首先,你的 .zshrc 中可能有类似以下内容:

bindkey '^r' history-incremental-search-backward

向前搜索也有类似的方法。您需要相应地更改这些:

bindkey '^R' history-incremental-pattern-search-backward

现在,您可以在历史搜索中使用模式。在这种情况下,键入 control-r(用于向后搜索),然后键入以下内容(搜索完模式后再次按 control-r):

对于字符串中任意位置的“scp”或“hello”:

?(scp|hello)

以“scp”开头,后跟字符串中任意位置的“hello”:

scp*?(hello)

并非每个可用于通配符的模式都有效(出于某种原因,如果您尝试使用两个表达式进行严格的“AND”搜索,其中任何一个都可能先出现,它就会不起作用),但这应该足够接近以完成您想要的操作。

顺便说一句,这是个好问题。

答案2

您可以使用两个项目/插件:

它们都允许通过 Zshell 的历史记录进行多词增量搜索。Zsh 导航工具还允许近似匹配并具有其他功能。HSMW 具有语法彩色输出– 您会看到您的历史记录被彩色化了。

相关内容