在bash中取消失败的反向搜索,但保留我输入的内容



我几乎每次运行命令时都按Ctrl+R,但在输入一个单词(例如find)后,我意识到该命令不在我的历史记录中,所以我得到了预期的结果:

(failed reverse-i-search)`find`: cat fire.txt

现在我如何取消搜索,但保持'find'在我的命令行?无论我按什么键,'cat fire.txt'都会出现在我的命令行上,我必须擦除并重新输入我的命令。

我正在使用Ubuntu。谢谢你。

我不知道你可以做你想要的,但你可以得到一些模糊接近(虽然它牺牲了其他功能的反向搜索)。

将键序列绑定到history-search-backward,并通过键入起始单词然后点击绑定的序列来进行搜索。

history-search-backward ()

在历史记录中向后搜索当前行开始到该点之间的字符串。搜索字符串必须匹配历史记录行的开头。这是一个非增量搜索。缺省情况下,该命令未绑定。

但这只适用于以您正在搜索的单词开头的命令(以及非增量)。

更新:刚刚发现,在寻找其他东西时,在bash NEWS 4.3中有一个条目说

b。有新的可绑定命令用于搜索的字符串的历史记录行首和点之间的字符(history-substring-search-forward history-substring-search-backward)

这意味着有一个足够新的readline版本(在NEWS的readline部分),你仍然可以用这个版本进行子字符串历史搜索

按下"Escape"键终止反向搜索。我只是在猜测。由于您有意在命令行中启用了查找,因此会触发反向搜索。

反向搜索从最新到最老的索引。由于cat fire.txt总是最近的搜索,它总是首先显示。

Linux Bash现在允许使用cntrl + S向前搜索和使用cntrl + R向后搜索。请检查你的端子是否有cntrl + S &cntrl + Q用于流量控制。如果是这种情况,你可以使用stty -ixon

来禁用它

理解问题

不确定我是否理解对了。我没有看到问题,答案已经在第一个评论中了,我把它放在了这个答案的中间"取消而不丢失控制台文本"

编辑:tmux

更重要的是,如果你想保留"查找"一词的副本。并且仍然保留cat fire.txt,当使用tmux作为编辑器时,这也是可能的。(未经过测试,但我猜alacrity也可以做到这一点,也许更多)

进入Ctrl+B+[模式,可以在控制台的任何区域自由漫游。按空格作为"递归搜索文本"的起始标记。按在结束标记处输入。如果你在你的配置中设置了鼠标,你也可以用鼠标Shift+标记和用Ctrl+Shift+C复制,或者你可以用鼠标标记,然后复制到tmux剪贴板。

取消而不丢失控制台文本

然后返回到您在开始时使用Ctrl+g的任何控制台文本,正如第一个注释所说:您在控制台中编写的任何内容仍然存在。

现在你可以将递归搜索的文本粘贴在上面,点击鼠标中键,Ctrl+Shift+V,或者查找其他方法。

元噪声

最新更新