如何激活 ZSH 行编辑器 ZLE?
我正在尝试在 ZSH 中启用本地历史记录。我已将其添加zle set-local-history 1
到我的~/.zshrc
,但它打印了错误:widgets can only be called when ZLE is active
。
我可以通过以下方式确认该行为zle widget
:widgets can only be called when ZLE is active
。
我看到man zshzle
了很多例子,如果 zle 处于活动状态,会发生什么。然而,我找不到任何关于如何激活 zle 的信息.因此问题是:有人能告诉我,如何激活 ZLE 吗?
答案1
这Zsh 行编辑器(或简称为 ZLE)对于 Z Shell 而言,就如同readline
对于 Bash 而言一样:它是您在输入/编辑命令行时自动使用的。因此,当 Zsh 获取文件时.zshrc
,ZLE 尚未激活,因为您尚未进入命令行。在您提交命令行后,ZLE 也未激活,并且直到您返回命令行时才会再次激活。
要使用set-local-history
,您需要将其绑定到键或钩子上。例如:
autoload -Uz add-zle-hook-widget
() {
$1() {
zle set-local-history 1
show-zle-state
}
# Create a widget that calls the function above.
zle -N $1
# Start each new cmd line in local history mode.
add-zle-hook-widget line-init $1
# Press Ctrl-X plus L to enable local history mode.
bindkey '^Xl' $1
} use-local-history
() {
$1() {
zle set-local-history 0
show-zle-state
}
# Create a widget that calls the function above.
zle -N $1
# Press Ctrl-X plus G to enable global history mode.
bindkey '^Xg' $1
} use-global-history
# Prints the current zle state below the cmd line.
show-zle-state() {
zle -M $ZLE_STATE
}