我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
的条目也不显示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.
...
我在以下位置找到了更多示例维基百科和@rayandrews 在 Unix.SE 上的回答,尽管既没有出现也没有声称是 的参数的完整列表key
,也没有描述在何处/如何key
定义。
我可以在哪里了解更多信息key[...]
以及如何使用它?
答案1
在 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]}"
)
它是由那个承诺在zsh
Debian 软件包 5.0.0-1 中。
可能 Archzshrc
从 Debian 复制了它。无论如何,这不是上游 zsh 发行版的一部分。
您始终可以使用以下命令查看哈希的定义$key
:
typeset -p key | sed -n l
或者
printf '%q => %q\n' "${(@kv)key}"