O Bash oferece a funcionalidade de reverter a pesquisa via Ctrl+ R. Em seguida, pode-se digitar uma parte de um comando para mostrar uma entrada apropriada do histórico.
Suponha que esta é minha história:
vim foo1
vim foo2 # I want to go here
vim foo3 # this is where I land, how to go back?
Eu procuro por foo
. Pressionar Ctrl+ Rnovamente mostra a próxima entrada de pesquisa apropriada. Muitas vezes acontece comigo que sou rápido demais e navego além do resultado pretendido e vim foo3
é mostrado e agora quero voltar para vim foo2
.
Portanto, minha pergunta é: como navego na pesquisa reversa?
bash
command-history
search
k0pernikus
fonte
fonte
Respostas:
Você pode acessar isso através da
forward-search-history
função à qual está vinculado por padrão ctrl+s. Infelizmente, ctrl+sé usado para sinalizarxoff
por padrão, o que significa que você não pode usá-lo para alterar a direção da pesquisa. Existem duas soluções para solucionar o problema, uma desativando o envio daxoff/xon
sinalização e a outra alterando a tecla de atalho paraforward-search-history
Desativar xon / xoff
Execute
stty -ixon
no seu terminal ou adicione-o ao seu~/.bashrc
. Isso permite que você use ctrl+spara usar aforward-search-history
função de histórico.Para obter mais informações sobre o fluxo de controle, consulte Como descongelar depois de pressionar acidentalmente Ctrl-S em um terminal? e algumas das respostas
Alterar a combinação de teclas
Se você não quiser alterar o comportamento padrão, ctrl+spode alterar a combinação de teclas
forward-search-history
combind
. Como a maioria das chaves já está definida no bash, talvez você precise ser criativo:Isso será vinculado ctrl+tao histórico de pesquisa direta, mas lembre-se de que, por padrão, ctrl+té executado
transpose-chars
fonte
stty -ixon
nozsh
e ele funciona muito bem. No entanto, existem efeitos colaterais possivelmente indesejados na desativação daxoff/xon
sinalização?ctrl+s
pausar a saída do terminal. Se você nunca usou antes isso não é problemaC-s
.. muito útil ao usar a cauda nos logs do servidor. Arrumado ! (Eu gostaria de ter uma outra upvote :))bind '"\C-t": history-search-forward'
Como alternativa à pesquisa reversa básica e à pesquisa direta fornecida pelo seu bash, convém procurar:
fzf , um "localizador nebuloso de linha de comando" auto-descrito.
Ele pode substituir a pesquisa reversa padrão do seu bash (e outros terminais).
Seus benefícios são que:
Meu fluxo de trabalho agora se baseia completamente no fzf na pesquisa reversa básica em máquinas sobre as quais tenho controle.
fonte