Existe uma maneira de pesquisar reversamente no histórico do zsh com mais de um termo de pesquisa?

4

Eu gostaria de poder pesquisar reversamente (CTRL + R) no zsh, mas ter os comandos pesquisados usando mais de um termo de pesquisa.

Por exemplo, eu gostaria de pesquisar por meio de comandos que incluíam "scp" e "hello".

Estou suspeitando que não seja possível sem pesquisar diretamente no .histfile .

    
por Ovesh 05.12.2012 / 05:50

2 respostas

6

Eu não tenho certeza se é possível fazer exatamente o que você estava pensando, mas você pode chegar bem perto (perto o suficiente para fazer o trabalho pelo menos).

Primeiro, você provavelmente tem algo como o seguinte em seu .zshrc:

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

E um semelhante para pesquisa direta. Você precisa alterá-los de acordo:

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

Agora você pode usar padrões em suas pesquisas de histórico. Nesse caso, digite control-r (para pesquisa inversa) e, em seguida, digite algo como o seguinte (pressione control-r novamente assim que terminar para procurar seu padrão):

Para "scp" OU "olá" em qualquer lugar da string:

?(scp|hello)

Começando com "scp" seguido de "olá" em qualquer lugar da string:

scp*?(hello)

Nem todo padrão que você pode usar para globbing funciona (por alguma razão, não funciona se você tentar fazer uma busca "AND" estrita com duas expressões onde qualquer um pode vir primeiro), mas isso deve estar perto o suficiente o que você quer.

Boa pergunta, a propósito.

    
por 13.01.2013 / 18:44
2

Você pode usar dois projetos / plug-ins:

Cada um deles permite pesquisas incrementais em várias palavras através do histórico do Zshell. Zsh Navigation Tools também permite correspondência aproximada e tem outros recursos. HSMW tem saída colorida de sintaxe - você vê seu histórico colorido.

    
por 22.05.2016 / 16:14

Tags