Copiar & Cole isso no seu .zshrc
:
Os cursores estão usando o histórico local:
bindkey "${key[Up]}" up-line-or-local-history
bindkey "${key[Down]}" down-line-or-local-history
up-line-or-local-history() {
zle set-local-history 1
zle up-line-or-history
zle set-local-history 0
}
zle -N up-line-or-local-history
down-line-or-local-history() {
zle set-local-history 1
zle down-line-or-history
zle set-local-history 0
}
zle -N down-line-or-local-history
Se você também precisar de atalhos de teclado ( CTRL + cursores) para percorrer o histórico global, inclua também isso em seu .zshrc
:
bindkey "^[[1;5A" up-line-or-history # [CTRL] + Cursor up
bindkey "^[[1;5B" down-line-or-history # [CTRL] + Cursor down
Para que isso funcione, a opção SHARE_HISTORY (ver 16.2.4 Histórico ) precisa ser ativado. Execute setopt
e verifique se "sharehistory" está listado. Se não adicionar setopt sharehistory
ao seu .zshrc
. Então pode-se usar set-local-history como fizemos acima. A documenação diz:
By default, history movement commands visit the imported lines as well as the local lines, but you can toggle this on and off with the set-local-history zle binding. It is also possible to create a zle widget that will make some commands ignore imported commands, and some include them.
Observe que, por padrão, o histórico global é usado (e todas as funções terminam em "zle set-local-history 0", ou seja, o histórico local é desativado). Então pressionar CTRL + R irá procurar o histórico global por padrão (o que faz sentido na maioria dos casos).
Isso é bem parecido com a solução de @mpy, mas está pronto para copiar & colar. Sobrescreve as teclas do cursor para cima e para baixo. Eu usei esta entrada na lista de e-mails .
Veja também: