Я не уверен, что возможно сделать именно то , что вы думали, но вы можете подойти очень близко (достаточно близко, чтобы выполнить работу, по крайней мере).
Во-первых, у вас, вероятно, есть что-то вроде следующего в вашем .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)
Не каждый шаблон, который вы можете использовать для глобализации работ (по какой-то причине он не работает, если вы пытаетесь выполнить строгий поиск "И" с двумя выражениями, где любое из них может стоять первым), но это должно быть достаточно близко, чтобы делать то, что вы хотите ,
Хороший вопрос, кстати.