zsh: Onde está o dicionário 'chave' - 'terminfo' definido

2

Estou aprendendo zsh no momento e configurando meu ~/.zshrc . No Archwiki, encontrei um snippet para alterar o comportamento de pesquisa do histórico :

autoload -Uz up-line-or-beginning-search down-line-or-beginning-search
zle -N up-line-or-beginning-search
zle -N down-line-or-beginning-search

[[ -n "$key[Up]"   ]] && bindkey -- "$key[Up]"   up-line-or-beginning-search
[[ -n "$key[Down]" ]] && bindkey -- "$key[Down]" down-line-or-beginning-search

Após vasculhar as páginas man , no entanto, não consigo encontrar nenhuma documentação sobre a palavra-chave key ou quais parâmetros ela pode usar. grep -ing para man zshall | grep -i "key.*\[" não mostra mais nenhuma informação, nem a entrada man zshzle para bindkey . A correspondência relevante mais próxima é a seguinte de man zshcontrib :

...
source ${ZDOTDIR:-$HOME}/.zkbd/$TERM-$VENDOR-$OSTYPE
[[ -n ${key[Left]} ]] && bindkey "${key[Left]}" backward-char
[[ -n ${key[Right]} ]] && bindkey "${key[Right]}" forward-char
# etc.
...

Encontrei mais exemplos em zshwiki e uma resposta de @rayandrews no Unix.SE , embora nenhum dos dois apareça ou afirme ser a lista completa de parâmetros para key , nem descreva onde / como key está definido.

Onde posso aprender mais sobre key[...] e como usá-lo?

    
por nivk 16.07.2017 / 00:24

1 resposta

0

No Debian, /etc/zsh/zshrc tem:

    typeset -A key
    key=(
        BackSpace  "${terminfo[kbs]}"
        Home       "${terminfo[khome]}"
        End        "${terminfo[kend]}"
        Insert     "${terminfo[kich1]}"
        Delete     "${terminfo[kdch1]}"
        Up         "${terminfo[kcuu1]}"
        Down       "${terminfo[kcud1]}"
        Left       "${terminfo[kcub1]}"
        Right      "${terminfo[kcuf1]}"
        PageUp     "${terminfo[kpp]}"
        PageDown   "${terminfo[knp]}"
    )

Foi adicionado por que o commit zsh pacote Debian 5.0.0-1.

Possivelmente o Arch copiou esse zshrc do Debian. Em qualquer caso, isso não faz parte da distribuição zsh upstream.

Você sempre pode ver a definição do $key hash com:

typeset -p key | sed -n l

Ou

printf '%q => %q\n' "${(@kv)key}"
    
por 23.07.2017 / 13:14