A função que você está procurando é fornecida pelos up-history
e up-line-or-history
widgets ( down-history
e down-line-or-history
para rolagem para baixo).
Por padrão, up-line-or-history
deve ser limitado a Acima , mas você pode vinculá-lo a (quase) qualquer outra seqüência de teclas com bindkey
. Em terminais chaves especiais (chaves que não geram um caractere imprimível) geram uma seqüência de chaves que é então interpretada pelo shell - ou não, como seu exemplo de 2A
para Shift + Acima mostra. Essas sequências chave também podem diferir entre emuladores de terminal. Para obter a sequência de teclas correta para o seu terminal, abra-a e pressione Ctrl + v seguido pela combinação de teclas desejada ( Shift + Acima ). No meu terminal (rxvt-unicode) recebo ^[[a
. Você pode vincular a sequência ao up-history
widged:
bindkey <in-string> up-history
Apenas substitua <in-string>
pela sequência encontrada. No meu caso
bindkey '^[[a' up-history
Nota 1: Você provavelmente precisará colocar a sequência entre aspas, pois provavelmente conterá caracteres que serão interpretados por zsh
caso contrário.
Nota 2: Algumas combinações de teclas podem gerar seqüências de teclas idênticas. Por exemplo, letras combinadas com Ctrl + Deslocamento geralmente não diferem das mesmas letras combinadas com apenas Ctrl . Ambos, Ctrl + Shift + a e Ctrl + a usualmente produzem ^A
. Em alguns emuladores de terminal, as combinações Ctrl + Shift são usadas até para atalhos do próprio terminal e não estão disponíveis no shell.