我希望能够在 zsh 上进行反向搜索 (CTRL+R),但使用多个搜索词搜索命令。
例如,我想搜索包含“scp”和“hello”的命令。
我怀疑如果不直接在.histfile.
我不确定是否有可能完全按照您的想法去做,但是您可以非常接近(至少足以完成工作)。
首先,您的 .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”搜索,其中一个可能先出现,则它不起作用),但这应该足够接近以执行您想要的操作.
顺便说一句,好问题。