在出现错误时使用最后一条命令填充命令行缓冲区

Populate command line buffer with last command in case of error

我正在尝试实现一种方法来在 Fish 出现错误时放回之前的命令。但是,以下始终会导致命令行为空。

function __process_last_cmd -e fish_postexec
  set -lx error $status
  set -lx cmd (commandline)
  if test $error -ne 0
    commandline $cmd
  end
 # history delete -C --exact $cmd
end

(还有一个辅助操作,其中命令从历史记录中删除,我已将其留在代码中以防相关。)

记录了 fish_postexec 事件以向函数提供命令行作为第一个参数,因此请使用

set -l cmd $argv[1]

https://fishshell.com/docs/current/commands.html#function