Quando o Z shell exibe o prompt, ele está ocioso e o IMHO não realiza nenhuma tarefa em segundo plano. Portanto, o arquivo de histórico $HISTFILE
é relido somente ao renderizar um novo prompt. É por isso que é suficiente, mas também é necessário que você pressione ENTER
em um terminal para reler seu histórico.
Se você quiser salvar este pressionamento de tecla adicional, poderá usar o seguinte zle widget em seu ~/.zshrc
:
up-line-or-history-reread() {
[[ -z $BUFFER ]] && fc -R $HISTFILE
zle up-line-or-history
}
zle -N up-line-or-history-reread
bindkey '^[[A' up-line-or-history-reread
Esse novo widget, que está vinculado a UP ARROW
, verifica se a linha de comando atual está vazia e, se for o caso, relerá o histórico. Depois disso, invoca o widget padrão ( up-line-or-history
).
Essa abordagem tem pelo menos essas duas falhas em comparação com o comportamento padrão:
- Se você estiver no histórico com alguns comandos e excluir toda a linha de comando, a próxima vez que pressionar
UP ARROW
será iniciada novamente no final do histórico de comandos. - Se você usar algum outro mecanismo de histórico, como a pesquisa de histórico, ainda precisará pressionar a tecla
ENTER
ou criar um widget semelhante para essas finalidades também.