Você poderia usar Alt + > para voltar ao final do seu histórico e depois procurar novamente, mas talvez você soubesse disso, e não é o que você quer.
Infelizmente, não acho que haja uma maneira de fazer isso acontecer.
Não consigo ver nada sobre isso em man bash ou man readline .
Poderíamos tentar escrever uma macro readline , mas não há nenhuma variável nos dizendo em que linha da história estamos.
Por isso, abaixo algumas outras sugestões que você pode encontrar alternativas viáveis:
Se o seu terminal estiver configurado para enviar Ctrl + S , (ex. executando stty stop undef ), então você pode mudar de direção apenas pressionando Ctrl + S .
Você pode usar history | grep <whatever> e digitar !<number from left column> para executá-lo.
Se for muito longo para digitar, faça uma função para economizar alguma digitação, por exemplo,
hgrep() {
history | grep "$@"
}
Configure history-search-backward e history-search-forward . Eles podem ser mais fáceis de usar.
por exemplo. ls Alt + P , Alt + P , Alt + P irá procurar para trás todos os seus comandos ls .
Além disso, você pode alterar as direções apenas pressionando o outro atalho, por exemplo, se você estiver no comando mais antigo, você pode simplesmente mudar de Alt + P para pressionar Alt + N .
Configure, colocando isso no seu /etc/inputrc ou .inputrc para bash :
$if mode=emacs
"\ep": history-search-backward
"\en": history-search-forward
$endif
e isso no seu .zshrc para zsh :
bindkey -M emacs '^[p' history-beginning-search-backward
bindkey -M emacs '^[n' history-beginning-search-forward
Você pode até dar um passo além e fazer a seta para cima fazer isso.
Finalmente, você tem certeza de que o comando está sendo inserido no histórico? Talvez esteja sendo ignorado devido às configurações de HISTCONTROL ou HISTIGNORE ou esteja caindo no final devido a HISTSIZE ?