如果出错,请使用last命令填充命令行缓冲区

时间:2018-03-27 06:04:50

标签: shell fish

我正在尝试实现一种方法,以便在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

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

1 个答案:

答案 0 :(得分:1)

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

set -l cmd $argv[1]

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