禁用 xon/xoff

禁用 xon/xoff

CtrlBash 提供了通过+进行反向搜索的功能R。然后,您可以输入命令的一部分,它将显示历史记录中的合适条目。

假设这是我的历史:

vim foo1
vim foo2 # I want to go here
vim foo3 # this is where I land, how to go back?

我寻找foo.再次点击Ctrl+R显示下一个合适的搜索条目。我经常遇到这样的情况:我速度太快,超出了我的预期结果,并且vim foo3显示出来,现在我想返回vim foo2

因此我的问题是:如何在反向搜索中导航?

答案1

您可以通过forward-search-history默认绑定到 的函数来访问它ctrl+s。不幸的是,默认情况下ctrl+s用于发出信号xoff,这意味着您不能使用它来更改搜索方向。有两种解决方案可以解决该问题,一种是禁用发送xoff/xon信令,另一种是更改按键绑定forward-search-history

禁用 xon/xoff

stty -ixon在您的终端中运行或将其添加到您的~/.bashrc.这允许您使用ctrl+s历史forward-search-history功能。

有关控制流的更多信息,请查看在终端中意外按下 Ctrl-S 后如何解冻?以及一些答案

更改键绑定

如果您不想更改 的默认行为,可以更改with 的ctrl+s键绑定。由于大多数键已经在 bash 中定义,您可能需要发挥创意:forward-search-historybind

bind "\C-t":forward-search-history

这将绑定ctrl+t到前向搜索历史记录,但请注意,默认ctrl+t运行transpose-chars

答案2

作为 bash 提供的基本反向搜索和正向搜索的替代方案,您可能需要研究:

弗兹夫,一个自我描述的“命令行模糊查找器”。

它可以取代 bash(和其他终端)的默认反向搜索。

它的好处在于:

  • 打印历史命令的列表
    • 再次按 Ctrl + R 切换按时间顺序或相关性排序
  • 可以通过箭头键(或 Ctrl + J / Ctrl + K)导航
  • 允许搜索多个针

我的工作流程现在完全依赖于 fzf,而不是我控制的机器上的基本反向搜索。

相关内容