答案1
这是在功能请求中提出的 历史多行命令 #2585其中用户建议了两种解决方法:
手动应用拆分。
例如:set line (echo $history[1])
针对最近的历史元素。用于
sed
在文件中分割行fish_history
。
不幸的是,此功能请求从未被标记为已分配给开发人员。
答案2
正如我对此问题的封闭 SO 版本所评论的那样,我对 Nushell 也有类似的问题。不幸的是,我不知道任何 shell (或非 shell) 实现中是否有支持查找器本身中的多行内容的模糊查找器。
fzf
这不是最佳选择,但我使用 Nushell 时有一些解决方法。其中的“预览”功能fzf
可以修改结果,您可以使用它将历史记录重新转换为格式正确、多行(甚至语法突出显示)的结果。在 Nushell 中,nu-highlight
Fish 的内置功能fish_indent --ansi
基本上可以做同样的事情(而且更好一些,因为它可以正确缩进)。这至少可以将“Finder”中的单行输出转换为更易读的多行预览。
您可以在 Fish 命令行测试的命令的一般格式是:
commandline --replace $(history --null | fzf --read0 --preview "echo {} | fish_indent --ansi")
还,这个fzf
插件对于 Fish 来说,预览已经启用,但我建议将预览窗口设置到右侧,以便您可以看到尽可能多的线条。