Ironicamente, a resposta na pergunta que as pessoas estão propondo como duplicata…
bindkey '\e[A' history-beginning-search-backward bindkey '\e[B' history-beginning-search-forward… é exatamente a resposta errada . Ele garante que as sequências de controle do seu terminal para as teclas de edição de setas sejam mapeadas por ZLE para os widgets de extensão
history-beginning-search-backward
e history-beginning-search-forward
que são fornecidos pelo plug-in history-substring-search
do Oh My ZSH.
Isso é exatamente o que você não quer .
Você está tentando desativar esse recurso, porque prefere outro comportamento; não tentando consertá-lo porque está quebrado.
O que você quer são aquelas chaves para mapear para os widgets como em vanilla Z Shell, sendo que o Oh My ZSH é uma extensão das customizações e customizações do Z Shell que algumas (mas não todas) pessoas gostam. Os widgets do Vanilla Z Shell têm aproximadamente o antigo comportamento de shell Bourne Again que você prefere. (Ao contrário do shell Bourne Again, no entanto, se você tiver um buffer de edição de várias linhas, ele moverá para cima e para baixo dentro dele antes, nas bordas superior e inferior do buffer, movendo-se para cima e para baixo no histórico.
Esses widgets seriam:
bindkey "$terminfo[kcuu1]" up-line-or-history bindkey "$terminfo[kcud1]" down-line-or-history
Note como se trabalha para não programar um tipo de terminal específico em seus scripts. Pode-se usar "$termcap[ku]"
e "$termcap[kd]"
, alternativamente. O Z Shell, presumindo que você tenha os módulos apropriados carregados, mantém um mapa para ambos. Geralmente o mundo prefere o terminfo se o tiver hoje em dia. Para ser estritamente à prova de balas, em algo que você usa com sistemas heterogêneos ou dá a outras pessoas, você precisará de um test -n
ali - assim como você encontrará as extensões Oh My ZSH fazendo de fato.
test -n "$terminfo[kcuu1]" && bindkey "$terminfo[kcuu1]" up-line-or-history test -n "$terminfo[kcud1]" && bindkey "$terminfo[kcud1]" down-line-or-history
(In extremis, para lidar com algumas possibilidades improváveis, você precisará de alguma expansão variável "${terminfo[x]-${termcap[y]}}"
. As extensões Oh My ZSH não se incomodam com isso, e na prática você também pode escapar sem ela. Na prática, quase todo mundo tem os módulos termcap e terminfo carregados, e tudo o que você precisa se preocupar é se o registro do tipo de terminal atual realmente define as sequências de controle relevantes, para as quais o test -n
serve.)
Uma aproximação mais exata do comportamento do shell Bourne Again seria
bindkey "$terminfo[kcuu1]" up-history bindkey "$terminfo[kcud1]" down-historyEsse não é o padrão da shell Z da vanilla, e depois de editar sua primeira linha de comando de múltiplas linhas, você pode decidir que o padrão é o que você preferir. ☺