Pesquisa de histórico interrompida após atualização de oh-my-zsh

3

Eu fiz o upgrade automático do oh-my-zsh alguns dias atrás. Agora meu histórico filtrado (digite algumas letras e seta para cima) não funciona mais. Eu não percebi o quão dependente eu me tornei nele.

EDITAR:

Por exemplo, eu costumava digitar algumas letras do comando e pressionar a seta para cima para pesquisar meu histórico:

➜  scratch git:(develop) up   # press ↑ arrow key

Solicitar alterações para:

➜  scratch git:(develop) upupdowndownleftrightleftrightbabastartselect # 3 key presses

Eu não sei como a versão que eu estava executando. Atualmente:

➜  scratch git:(develop) echo $ZSH_VERSION
5.0.2

Aqui estão as linhas que tenho em meu arquivo .zshrc que achei que estavam tornando o trabalho de pesquisa incremental:

# Set bindkeys to start search from last word
bindkey '\e[A' history-beginning-search-backward
bindkey '\e[B' history-beginning-search-forward
    
por JHo 02.04.2014 / 00:45

1 resposta

3

Existem duas seqüências de escape padrão para chaves de cursor; terminais diferentes, ou até mesmo o mesmo terminal em modos diferentes, podem enviar um ou outro. Por exemplo, xterm envia \eOA para Up em “modo de cursor de aplicativo” e \e[A caso contrário. Para Down você pode encontrar tanto \e[B como \eOB , etc.

Uma solução é duplicar suas ligações: sempre que você ligar uma sequência de escape, ligue a outra seqüência de escape ao mesmo comando.

bindkey '\eOA' history-beginning-search-backward
bindkey '\e[A' history-beginning-search-backward
bindkey '\eOB' history-beginning-search-forward
bindkey '\e[B' history-beginning-search-forward

Outra abordagem é sempre ligar uma sequência de escape, e fazer a outra seqüência de escape injetar a outra.

bindkey '\e[A' history-beginning-search-backward
bindkey '\e[B' history-beginning-search-forward
bindkey -s '\eOA' '\e[A'
bindkey -s '\eOB' '\e[B'

Eu não sei porque a atualização do oh-my-zsh teria afetado a seqüência de escape que o shell recebe do terminal. Talvez a nova versão realize uma inicialização de terminal diferente que habilite o modo de cursor do aplicativo.

    
por 02.04.2014 / 16:51