如何将输出发送到下一个输入行?

如何将输出发送到下一个输入行?

这是我的片段alias hst="history 1 -1 | cut -c 8- | uniq | fzf "。当我运行时hst 输出是

$ ~ hst
(the output from hst)
$

这就是我要的

$ ~ hst
$ (the output from hst)

例子

$ ~ hst
vi .zshrc
$

应该

$ ~ hst
$ vi .zshrc

如何解决这个问题? (或增强脚本)

答案1

要将某些内容添加到 shell 输入堆栈,就好像它是由用户输入的一样,您可以使用print -z

hst() {
  local cmd
  cmd=$(print -rNC1 -- ${(u)history} | fzf --read0 "$@") &&
    print -rz -- $cmd
}

相关内容