每次运行命令时我都会按Ctrl + R,但输入一个单词后(例如查找)我发现命令不在我的历史记录中,所以我按预期得到了这个:
(failed reverse-i-search)`find`: cat fire.txt
现在如何取消搜索但在命令行中保留“查找”?无论什么键,我按'cat fire.txt'都会在我的命令行上结束,我必须擦除并重新输入我的命令。
我正在使用Ubuntu。谢谢。
答案 0 :(得分:1)
您按“退出”键终止反向搜索。 我在这里推测。由于您有意在命令行中启用了查找,因此会触发反向搜索。
反向搜索从最新到最旧搜索索引。由于cat fire.txt
始终是最近的搜索,因此始终会首先显示。
Linux Bash现在允许使用cntrl + S
进行正向搜索和使用cntrl + R
进行反向搜索。请检查您的终端是否陷阱cntrl + S
和cntrl + Q
以进行流量控制。
如果是这种情况,您可以使用stty -ixon
希望这会有所帮助。
答案 1 :(得分:0)
我不知道你可以完全按照自己的意愿行事,但你可以隐约接近(尽管它牺牲了反向搜索的其他功能)。
将一个键序列绑定到this comment,然后输入起始单词然后点击绑定序列来进行搜索。
history-search-backward()
在历史记录中向后搜索当前行的开头和点之间的字符串。搜索字符串必须在历史记录行的开头匹配。这是一种非增量搜索。默认情况下,此命令未绑定。
但这仅适用于以您要搜索的单词开头的命令(以及不是增量的)。
更新:刚刚发现,在寻找其他内容时,在bash history-search-backward
中为4.3提供了一个条目
湾有新的可绑定命令来搜索字符串的历史记录 行的开头和点之间的字符 (history-substring-search-forward,history-substring-search-backward)
这意味着使用足够新版本的readline(在NEWS的readline部分中),您仍然可以使用此版本进行子字符串历史记录搜索。