Como navegar na busca reversa do bash?

39

O Bash oferece a funcionalidade para reverter a pesquisa através do Ctrl + R . Em seguida, pode-se digitar uma parte de um comando que mostrará uma entrada de ajuste do histórico.

Suponha que esta é a minha história:

vim foo1
vim foo2 # I want to go here
vim foo3 # this is where I land, how to go back?

Eu pesquiso foo . Pressionar Ctrl + R novamente mostra a próxima entrada de pesquisa de ajuste. Muitas vezes acontece comigo que eu sou muito rápido e navego além do resultado pretendido e vim foo3 é mostrado e agora eu quero voltar para vim foo2 .

Por isso, minha pergunta é: Como navego na pesquisa inversa?

    
por k0pernikus 24.05.2012 / 17:57

1 resposta

36

Você pode acessá-lo através da função forward-search-history , que é ligada por padrão a ctrl + s . Infelizmente ctrl + s é usado para sinalizar xoff por padrão, o que significa que você não pode usá-lo para mudar a direção da busca. Existem duas soluções para resolver o problema, uma desabilitando o envio da sinalização xoff/xon e a outra alteração do atalho para forward-search-history

Desativar xon / xoff

Execute stty -ixon no seu terminal ou adicione-o ao seu ~/.bashrc . Isso permite que você use ctrl + s para usar a função de histórico forward-search-history .

Para obter mais informações sobre o fluxo de controle, consulte Como descongelar após acidentalmente pressionar Ctrl-S em um terminal? e algumas das respostas

Alterar a associação de teclas

Se você não quiser alterar o comportamento padrão de ctrl + s , poderá alterar a combinação de teclas para forward-search-history com bind . Como a maioria das chaves já estão definidas no bash, você pode ter que ser criativo:

bind "\C-t":forward-search-history

Isto ligará ctrl + t ao forward-search-history, mas esteja ciente de que por padrão ctrl + t é executado transpose-chars

    
por 24.05.2012 / 18:50