zsh: `key` -> `terminfo` 사전 정의는 어디에 있습니까?

zsh: `key` -> `terminfo` 사전 정의는 어디에 있습니까?

나는 zsh현재 내 것을 배우고 구성하고 있습니다 ~/.zshrc. Archwiki에서 나는 다음을 발견했습니다.과거 검색 동작을 변경하는 스니펫:

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

그러나 페이지를 검색한 후에도 이 키워드나 사용할 수 있는 매개변수 man에 대한 문서를 찾을 수 없습니다 . -ing for는 더 이상 정보를 표시하지 않으며 -ing for 항목도 표시하지 않습니다 . 가장 관련성이 높은 일치 항목은 다음과 같습니다 .keygrepman zshall | grep -i "key.*\["man zshzlebindkeyman 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.
...

더 많은 예를 찾았습니다.위키피디아그리고Unix.SE에서 @rayandrews의 답변, 매개변수의 전체 목록이 나타나지도 않고 그렇다고 주장되지도 key않으며 매개변수가 정의된 위치/방법에 대한 설명도 없습니다 key.

key[...]자세한 내용 과 사용 방법은 어디에서 확인할 수 있나요 ?

답변1

데비안에는 /etc/zsh/zshrc다음이 있습니다:

    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]}"
    )

그것은 출신이다그 약속데비안 zsh패키지 5.0.0-1.

아마도 Arch가 zshrc데비안에서 복사했을 수도 있습니다. 어쨌든 이것은 업스트림 zsh 배포판의 일부가 아닙니다.

다음을 사용하여 언제든지 해시 정의를 볼 수 있습니다 $key.

typeset -p key | sed -n l

또는

printf '%q => %q\n' "${(@kv)key}"

관련 정보