O comportamento descrito é devido ao uso de up-line-or-search
, que se moverá através da linha de um comando e na primeira linha de um comando irá procurar no histórico por linhas começando com a primeira palavra.
Explicação do seu problema:
A partir de uma linha vazia, qualquer linha no histórico será igual. Contanto que apenas os comandos de linha única sejam encontrados, não haverá diferença no comportamento para up-history
ou up-line-or-history
. Mas ao atingir um comando de várias linhas, ele não está mais pesquisando, mas passando pelas linhas. Quando a linha superior é alcançada, inicia uma nova pesquisa, mas agora está procurando pela primeira palavra nesta linha, em vez de continuar a pesquisa antiga por qualquer linha.
Por padrão, Up é mapeado para up-line-or-history
, que retrocede através das entradas do histórico e no caso de comandos multilinha através de cada linha. up-history
também passaria pelo histórico, mas trataria comandos de várias linhas como os de linha única. Ambos forneceriam o comportamento esperado.
Eu sugeriria pesquisar sua configuração zsh e Oh-my-ZSH para a qual up-line-or-search
está vinculada e substituí-la por up-line-or-history
ou excluir a ligação, já que up-line-or-history
é o padrão.
Além disso, dependendo do terminal usado, o seqüestro de chave para Up é ^[OA
ou ^[[A
. Para obter o consisten do seu shell, ambos devem ser configurados para os mesmos comandos.