如何在 zsh 启动时设置本地历史记录?

如何在 zsh 启动时设置本地历史记录?

zle set-local-history 1出于.zshrc原因的呼唤

widgets can only be called when ZLE is active

有没有办法在启动时执行该小部件,或者可能是针对这个特殊情况的设置


更新:我检查了 zsh 源代码,我相信这hist_skip_flags仅由set-local-history小部件控制,因此没有设置可以更改此行为。但是,很难确定是否可以在启动时运行 zle 小部件。

答案1

解决方案基于评论来自@okapi:

zle-line-init() {
  if [[ "$ZLE_LOCAL_HISTORY_SET" != "1" ]]; then
    ZLE_LOCAL_HISTORY_SET=1
    zle set-local-history 1
  fi
}
zle -N zle-line-init

zle-line-init在每次用户输入请求时执行,因此仅在第一次运行时需要额外的环境变量来设置本地历史记录。

相关内容