无法像使用CTRL-r一样转发搜索Bash历史

我试图搜索我的bash历史类似于CTRL-r,但向前的方向。

这对我来说是一种痛苦,当我只是太频繁地点击CTRL-r,再次找到前面的命令。

如何像反向搜索一样向前搜索Bash历史记录?

73313 次浏览

你也可以向前搜索。从bash信息手册,"8.2.5在历史记录中查找命令":

要在历史中向后搜索特定的字符串,键入C-r。 输入C-s将向前搜索历史记录

然而,Ctrl-S的问题是有时会与XON/XOFF流控制发生冲突(例如在Konsole中)。但是,搜索是一个readline特性,您应该能够将其绑定到其他键。更新:通过运行来禁用XON/XOFF更简单更好

stty -ixon

我通常在终端中按ESC,然后按>。它至少会重置,然后你可以试着少点CTRL+R

在我看来,最好的技巧是启用pguppgdown。把它放在你的~/.inputrc

"\e[5~": history-search-forward
"\e[6~": history-search-backward

登出/登录,键入第一个字母,然后pguppgdown搜索整个历史

ctrl-R搜索所有包含单词的行,而history-search-forward搜索以单词开头的行

你可能想尝试https://github.com/dvorka/hstr,它允许“建议框风格”过滤Bash历史,(可选)基于排序的指标,即它在向前和向后方向上都更高效和更快:

enter image description here

它可以很容易地绑定Ctrl-r和/或ctrl s

另一个解决方案是使用:

history | grep <searched expression>

正如许多人所经历的那样,由于软件流程控制 (XON/XOFF流控制),ctrl+年代冻结(和ctrl+解冻)终端,您可以在接受的答案中禁用它。

虽然我不能说我真的有意使用这个功能,但我确实希望这个选项能够暂停快速移动的终端文本流,所以我不想完全禁用它。

因此,我没有关闭xoff函数,而是通过在.bashrc中放置以下内容来反弹xoff函数

stty stop '^P'

它将xoff绑定到ctrl+p(并且ctrl+q仍然未冻结)。我用了"p"为“pause"并且这确实掩盖了bash之前的命令函数previous-history。就我个人而言,我总是使用向上箭头键,所以这对我来说无关紧要,但你可以选择不同的键。

这将自动为forward-search-history释放ctrl+年代

对于KDE的终端应用程序(Konsole),你可以根据答案从设置中禁用XON/XOFF流量控制:

"在Konsole你可以禁用这个功能,通过设置-> 配置配置文件->选择当前剖面->编辑配置文件-> 启用流控制使用Ctrl+S和 Ctrl + Q”“< / p >