从 zsh 历史记录中插入多行

从 zsh 历史记录中插入多行

我试图轻松地将历史记录中的多行插入到当前提示中(以实现https://github.com/junegunn/fzf/issues/1806)。

假设我有行号,如何在提示中插入以换行符分隔的历史记录项列表?

如果我有一个号码,我可以这样做:

zle vi-fetch-history -n $num

但如果我尝试这样做两次,例如:

zle vi-fetch-history -n $num_1
zle vi-fetch-history -n $num_2

那么第二次调用将覆盖第一次调用。

它看起来像这个小部件在 zsh 源代码中用 C 实现,所以我不能直接延长它。

有没有办法做到这一点?

答案1

对于“行数”,我想你指的是历史行号。在这种情况下,您可以使用fc内置

local -a histnums=() histlines=()
# Insert code that collects history numbers into $histnums
local num; for num in $histnums; do
  histlines+=( "$(fc -ln $num $num)" )
done
BUFFER="$(echo ${(F)histlines})"

相关内容