volta para o final do histórico bash ao usar pesquisa reversa?

8

Eu mantenho um histórico bash razoavelmente longo e, às vezes, quando procuro por algo com a função bash reverse search ( Ctrl + r ), acabo no início do histórico de pesquisa e Ainda não encontrei o que precisava e, em seguida, gostaria de voltar ao final do arquivo de histórico. Uma opção é usar a função de pesquisa direta ( Ctrl + s ) que se aproxima do final do histórico ou executar # , mas existe também um atalho de teclado para mover diretamente para o final do histórico de bash?

    
por Martin 26.05.2015 / 15:24

1 resposta

4

Existe a função readline end-of-history predefinida mapeada para ( M - > ) mas se usada durante a procura inversa, sai da linha de pesquisa inversa.

Uma possível solução alternativa / truque

Iniciar pesquisa de sequência

Em vez de usar a pesquisa inversa, você pode usar history-search-backward e history-search-forward (padrão não mapeado) mapeando-os para para cima / para baixo (muito útil) em .inputrc :

# up-down arrow to search in history
"\e[A":history-search-backward
"\e[B":history-search-forward

Então, depois de ter digitado, você pode inverter a busca pressionando para cima (em vez de Ctrl - r ) e quando quiser retornar ao fim do histórico você pode usar a função de fim de história pressionando ( M - > )

Desta forma "A string de busca deve coincidir no início de uma linha de histórico " então se você procurar por ls -ltr você tem que digitar ls e então pressionar para cima chave.

Pesquisa de subcadeia

se você quiser " A seqüência de pesquisa pode corresponder em qualquer lugar da linha do histórico " você tem que usar history-substr-search-forward e history-substr-search-backward :

# up-down arrow to search in history
"\e[A":history-substr-search-backward
"\e[B":history-substr-search-forward

Desta forma, se você procurar por ls -ltr , você pode digitar ls, mas também ltr before para subir .

link

    
por 28.05.2015 / 02:00