与CTRL-r类似,无法转发搜索Bash历史记录


203

我正在尝试与CTRL- 相似地搜索我的bash历史记录r,但要指明前进方向。

这一直是我的痛苦,我只打一次,过于频繁CTRL- r,再次找到先前的命令。

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

Answers:


320

您也可以向前搜索。在bash信息手册中,“ 8.2.5在历史记录中搜索命令 ”:

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

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

stty -ixon

4
这很棒,但是我在.profile中添加了stty -ixon,对于新选项卡似乎不起作用。关于如何进行这项工作的任何想法?我希望XON / XOFF默认处于禁用状态。
John Gallagher

13
万一其他人遇到与我相同的问题-如果将其添加到.profile中,则该问题不会生效。只有将其添加到.bash_profile中,魔术才会发生!感谢您提供一个很好的建议-多年来一直让我发疯。
John Gallagher

12
@JohnGallagher需要注意的是,.bash_profile.profile只,发布登录炮弹。我会将其放入.bashrc(我从中获取.profile)。
维克多·扎马尼亚

13
[[ $- == *i* ]] && stty -ixon可以用来避免这里描述
mMontu 2014年

3
如果您使用的是PuTTY,并且不想/不想维护.bash_profile所连接的每台机器,那么对超级用户的此回答就可以解决。
疯狂的2014年

41

IMHO的最佳技巧是通过pgup和启用pgdown。只是把它放在你的~/.inputrc

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

注销/登录,输入前几个字母,然后按pguppgdown以搜索整个历史记录

ctrl-R 搜索所有包含单词的行,而历史搜索搜索行以单词开头


2
您也可以取消注释这两行/etc/inputrc(例如,在Ubuntu中)。
falconepl

2
我更喜欢将其绑定到上下箭头:“ \ e [A”:历史搜索后退和“ \ e [B”:历史搜索后退
shmup

如果这对bash不起作用怎么办?
索伦

26

您可能想尝试https://github.com/dvorka/hstr,它允许使用(可选)基于度量的排序对Bash历史记录进行“建议框样式”过滤,即,在向前和向后的方向上,效率和速度都大大提高:

在此处输入图片说明

它可以轻松绑定Ctrl-r和/或Ctrl-s


5
我恋爱了。在Ubuntu上安装的快速说明:sudo add-apt-repository ppa:ultradvorka/ppa; sudo apt-get update; sudo apt-get install hh; hh --show-configuration >> ~/.bashrc;
CivFan 2015年

14

我通常按ESC终端,然后按>。至少会重置,然后您可以尝试减少点击次数,而不必CTRL+ R


s / click / press /另外,您需要按两次Escape键(第一次是从向后搜索中退出)。
Croad Langshan 2014年
By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.