有没有一种方法可以使用多个搜索词反向搜索 zsh 历史记录?

Ove*_*esh 4 zsh shell

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

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

我怀疑如果不直接在.histfile.

Mar*_*nks 7

我不确定是否有可能完全按照您的想法去做,但是您可以非常接近(至少足以完成工作)。

首先,您的 .zshrc 文件中可能包含以下内容:

bindkey '^r' history-incremental-search-backward
Run Code Online (Sandbox Code Playgroud)

还有一个类似的用于前向搜索。您需要相应地更改这些:

bindkey '^R' history-incremental-pattern-search-backward
Run Code Online (Sandbox Code Playgroud)

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

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

?(scp|hello)
Run Code Online (Sandbox Code Playgroud)

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

scp*?(hello)
Run Code Online (Sandbox Code Playgroud)

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

顺便说一句,好问题。