我正在尝试实现一种方法,以便在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
(还有一个辅助操作,命令从历史记录中删除,我已将其留在代码中,以防它相关。)
答案 0 :(得分:1)
记录fish_postexec
事件以将命令行作为第一个参数提供给函数,因此请使用
set -l cmd $argv[1]