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
?