如何激活 ZLE(ZSH 行编辑器)

如何激活 ZLE(ZSH 行编辑器)

如何激活 ZSH 行编辑器 ZLE?

我正在尝试在 ZSH 中启用本地历史记录。我已将其添加zle set-local-history 1到我的~/.zshrc,但它打印了错误:widgets can only be called when ZLE is active

我可以通过以下方式确认该行为zle widgetwidgets 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
}

相关内容