Copie e 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 ligações de teclas ( CTRL+ cursores) para percorrer o histórico global, adicione também isso ao seu .zshrc
:
bindkey "^[[1;5A" up-line-or-history # [CTRL] + Cursor up
bindkey "^[[1;5B" down-line-or-history # [CTRL] + Cursor down
Para fazer isso funcionar, a opção SHARE_HISTORY (consulte 16.2.4 Histórico ) precisa estar ativada. 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 documentação diz:
Por padrão, os comandos de movimento do histórico visitam as linhas importadas e as linhas locais, mas você pode ativar e desativar isso com a ligação set-local-history zle. Também é possível criar um widget zle que fará com que alguns comandos ignorem os comandos importados e alguns os incluam.
Observe que, por padrão, o histórico global é usado (e todas as funções terminam com "zle set-local-history 0", ou seja, o histórico local está desativado). Então, pressionar CTRL+ Rprocurará o histórico global por padrão (o que faz sentido na maioria dos casos).
Isso é bastante semelhante à solução do @mpy, mas está pronto para copiar e colar. Sobrescreve as teclas do cursor para cima e para baixo. Eu usei essa entrada da lista de emails .
Veja também:
${key[Up]}
. Então (no modo de edição), digite Ctrl + V seguido pela seta para cima. Isso deve inserir o código da chave correto. Faça o mesmo para a seta para baixo.Ctrl+R
.Você pode configurar um widget zle especial para mostrar apenas itens do histórico local:
Supondo que isso ↑esteja vinculado a
up-line-or-history
(acho que isso é padrão), você pode vincular esse widget a outro toque de tecla, como CTRL+ ↑:Se isso funcionar provavelmente depende do seu terminal. A linha acima funciona em
URxvt/Screen
. Comxterm
você precisarápara CTRL+ ↑.
Outra variante pode ser
portanto, se você tiver o histórico local ativado, poderá espiar o global ou vice-versa.
fonte
A resposta do @ lumbic funcionou para mim apenas com algumas alterações:
Esse código torna o histórico global o padrão e usa a seta CTRL para o histórico local.
Nota: Eu uso o zsh 5.0.2 junto com o oh-my-zsh.
fonte
Ctrl+arrows
para a história local.Eu tenho tentado as opções listadas em outras respostas aqui, mas não estava satisfeito com elas. Os widgets 1
up-history
ouup-line-or-history
não incluem a pesquisa inicial e o widget 1up-line-or-beginning-search
parece não funcionar bem ao alterar a preferência do histórico local ao usá-lo. 2Então, eu vim para as seguintes configurações. Ele permite que as Ctrlsetas + pesquisem o histórico global, Alt+ as setas pesquisem apenas o histórico local (semelhante ao Bash) e as setas independentes para usar a pesquisa inicial inteligente (padrão em Oh My Zsh ).
1 Suas
down
contrapartes também significam implicitamente.2 O início usado para pesquisar é redefinido depois de alterar a preferência do histórico local; portanto, todo o primeiro comando encontrado é usado como o início a ser pesquisado na segunda pesquisa.
fonte
Com base nas várias respostas aqui, pude criar uma versão condicionada:
Esta versão substituirá os existentes
up-line-or-history
e osdown-line-or-history
widgets por novos widgets definidos pelo usuário. Este widget ativa o histórico local e, em seguida, chama os widgets originais , que estão disponíveis sob os.
nomes predefinidos. Consulte a documentação do widget zle para obter detalhes.Isso significa que você mantém todas as combinações de teclas existentes. Portanto, você pode evitar ter que descobrir qual é a sequência de escape para digitar uma seta para cima no seu terminal atual.
fonte
A resposta acima funcionou para mim.
Referência: https://coderwall.com/p/jpj_6q/zsh-better-history-searching-with-arrow-keys
fonte