Zshzsh:
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
頁面之後,我找不到任何關於key
關鍵字的文件或它可以採用的參數。grep
-ing forman zshall | grep -i "key.*\["
不顯示更多資訊,man zshzle
for 的條目也不顯示bindkey
。最接近的相關匹配來自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. ...
我在 zshwiki 找到了更多範例,並在Unix.SE上找到了來自@rayandrews 的答案,儘管它們似乎都不是或聲稱是參數的完整列表
key
,也沒有描述key
定義的位置/方式。我在哪裡可以了解更多資訊
key[...]
以及如何使用它?
在 Debian 上,
/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]}" )
它是由Debian 包 5.0.0-1中的那個送出添加的。
zsh
可能 Arch 是
zshrc
從 Debian 複製的。無論如何,這不是上游 zsh 發行版的一部分。您可以隨時查看
$key
散列的定義:typeset -p key | sed -n l
或者
printf '%q => %q\n' "${(@kv)key}"