Anthony Naddeo Asked: 2024-04-28 02:12:03 +0800 CST2024-04-28 02:12:03 +0800 CST 2024-04-28 02:12:03 +0800 CST 在多行上显示 Fish (ctrl+r) 历史记录中的长命令 772 当您的历史记录充满长命令时,我正在寻找一种用 Fish 搜索历史记录的解决方案。例如,我经常在我的历史记录中使用包含 json 有效负载的curl命令,并且它们足够长,以至于它们不适合放在一行中,这使得很难一眼区分它们。我当前的解决方案是输入更多我想要的内容,但这很烦人。 有没有办法让历史条目在执行时显示,而不将它们减少到一行?有没有我不想要求的更聪明的解决方案? shell 2 个回答 Voted Best Answer harrymc 2024-04-28T02:43:53+08:002024-04-28T02:43:53+08:00 这是在功能请求历史多行命令 #2585中提出的问题 ,其中用户建议了两种解决方法: 手动应用拆分。 例如: set line (echo $history[1])对于最近的历史元素。 用于sed分割文件中的行fish_history。 不幸的是,此功能请求从未被标记为已分配给开发人员。 NotTheDr01ds 2024-04-29T21:50:52+08:002024-04-29T21:50:52+08:00 当我评论这个问题的封闭 SO 版本时,我对 Nushell 也有类似的问题。不幸的是,我不知道任何 shell(或非 shell)实现中的模糊查找器支持查找器本身的多行内容。 fzf这不是最佳方案,但我在 Nushell 中使用了一些解决方法。中的“预览”功能fzf可以修改结果,您可以使用它将历史记录恢复为格式正确的多行(甚至语法突出显示)结果。在 Nushell 中,nu-highlightFish 的内置功能fish_indent --ansi本质上做同样的事情(而且更好一点,因为它正确缩进)。这至少可以将“Finder”中的单行输出变成更具可读性的多行预览。 您可以在 Fish 命令行中测试的命令的一般格式为: commandline --replace $(history --null | fzf --read0 --preview "echo {} | fish_indent --ansi") 另外,这个Fishfzf插件已经启用了预览,但我建议将预览窗口设置到右侧,以便您可以看到尽可能多的行。
这是在功能请求历史多行命令 #2585中提出的问题 ,其中用户建议了两种解决方法:
手动应用拆分。
例如:
set line (echo $history[1])
对于最近的历史元素。用于
sed
分割文件中的行fish_history
。不幸的是,此功能请求从未被标记为已分配给开发人员。
当我评论这个问题的封闭 SO 版本时,我对 Nushell 也有类似的问题。不幸的是,我不知道任何 shell(或非 shell)实现中的模糊查找器支持查找器本身的多行内容。
fzf
这不是最佳方案,但我在 Nushell 中使用了一些解决方法。中的“预览”功能fzf
可以修改结果,您可以使用它将历史记录恢复为格式正确的多行(甚至语法突出显示)结果。在 Nushell 中,nu-highlight
Fish 的内置功能fish_indent --ansi
本质上做同样的事情(而且更好一点,因为它正确缩进)。这至少可以将“Finder”中的单行输出变成更具可读性的多行预览。您可以在 Fish 命令行中测试的命令的一般格式为:
另外,这个Fish
fzf
插件已经启用了预览,但我建议将预览窗口设置到右侧,以便您可以看到尽可能多的行。