4

Я хотел бы иметь возможность обратного поиска (CTRL+R) в zsh, но при этом команды должны быть выполнены с использованием более одного поискового запроса.

Например, я бы хотел выполнить поиск по командам, которые включали как "scp", так и "hello".

Я подозреваю, что это невозможно без поиска непосредственно в .histfile .

2 ответа2

6

Я не уверен, что возможно сделать именно то , что вы думали, но вы можете подойти очень близко (достаточно близко, чтобы выполнить работу, по крайней мере).

Во-первых, у вас, вероятно, есть что-то вроде следующего в вашем .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)

Не каждый шаблон, который вы можете использовать для глобализации работ (по какой-то причине он не работает, если вы пытаетесь выполнить строгий поиск "И" с двумя выражениями, где любое из них может стоять первым), но это должно быть достаточно близко, чтобы делать то, что вы хотите ,

Хороший вопрос, кстати.

2

Вы можете использовать два проекта / плагина:

Каждый из них позволяет выполнять поиск по нескольким словам в истории Zshell. Zsh Navigation Tools также позволяет приблизительное сопоставление и имеет другие функции. HSMW имеет цветной синтаксический вывод - вы видите свою историю раскрашенной.

Всё ещё ищете ответ? Посмотрите другие вопросы с метками .