Encontrei a solução para o meu problema na documentação do ZSH . Oh-my-zsh parece mapear as chaves ↑ e ↓ para algo como
bindkey '\e[A' history-search-backward
bindkey '\e[B' history-search-forward
Que produz o comportamento exato que descrevi acima. A documentação do ZSH descreve o comportamento de history-search-backward
as
Search backward in the history for a line beginning with the first word in the buffer.
O que eu queria, em vez disso, era o mapeamento a seguir, que inseri no meu ~/.zshrc
:
bindkey '\e[A' history-beginning-search-backward
bindkey '\e[B' history-beginning-search-forward
O comportamento de history-beginning-search-backward
é o seguinte:
Search forward in the history for a line beginning with the current line up to the cursor. This leaves the cursor in its original position.
Além disso, se \e[A
não funcionar para as setas para cima ou para baixo, pressione <ctrl-v><KEY (e.g., up arrow)>
em outro terminal que forneça ^[OA
. Então você pode usar isso em vez de \e[A
. O processo é descrito aqui: link