如何来回进行反向搜索?

如何来回进行反向搜索?

我经常使用反向搜索,这很酷。但有时当多次按下 Ctrl+r 时,我会传递我真正想要的命令。因为 Ctrl+r 会在历史记录中向后搜索,从最新到最旧,所以我必须:

取消,再次搜索并准确停止在命令处,而不跳过它。在反向搜索提示中,是否可以向前搜索,即从我所在的位置到最新的位置。我天真地尝试了 Ctrl+shift+r,没有运气。我听说过 Ctrl+g,但这不是我在这里所期望的。有人有想法吗?

答案1

一句话的答案:stty -ixon在终端中运行,然后使用Ctrl+S将搜索方向从向后更改为向前。

确切答案可能取决于您使用的 shell。但是,在 bash 和 Zsh(可能还有其他 shell)中,您(理论上)可以键入Ctrl+S向前搜索。因此,在多次按下Ctrl+后,您可以多次按下+以移动到您真正想要的命令。但是,许多终端会将+和+捕获为RCtrlSCtrlSCtrlQ软件流控制,因此Ctrl+S永远不会到达 bash ;如果您希望 bash 而不是您的终端读取 + CtrlS您可以通过运行来禁用软件流控制stty -ixon

答案2

终端将该^S字符解释为其STOP控制字符,而不是将其传递给 shell。

例如,您可以使用 来更改终端的STOP字符。要在终端/shell 中输入,请先输入;然后输入。stty stop ^O^O^V^O

要查看终端的控制字符,请输入stty -a

参考:

  1. https://pubs.opengroup.org/onlinepubs/9699919799/utilities/stty.html#:~:text=shall%20be%20supported%3A-,%2Da,Write%20to%20standard%20output%20all%20the%20current%20settings%20for%20the%20terminal.,-%2Dg
  2. https://zsh.sourceforge.io/Doc/Release/Zsh-Line-Editor.html#Modifying-Text
  3. https://www.gnu.org/software/bash/manual/bash.html#Commands-For-Text

相关内容