问题:你怎么告诉Ctrl+ rreverse-i-search"重置自己"并且每次都从历史的底部开始搜索?
背景:在Bash中使用reverse-i-search时,一旦完成搜索历史记录并且找不到更多匹配项,我总是卡住.有时我会Esc再次点击并重新调用Ctrl+ r,期望它从我的历史记录底部开始一个全新的搜索.然而,"指针"似乎仍然在我历史上的前一个地方.
问题是,我通常不希望这种行为.如果我点击Esc,然后重新调用Ctrl+ r,我希望它表明它应该再次从底部重新启动并重新启动.
更新:我想我应该提到我在Windows上使用Cygwin,因为到目前为止提到的解决方案都没有.
更新:此问题被标记为可能重复的问题.由于以下原因,此问题不重复:
替代问题不涉及Cygwin.
替代问题不涉及如何将搜索重置为其初始状态(相反,它只处理搜索和转发中的向后).
hayalci.. 32
我的bash按照你的期望工作.也许点击"ctrl + C"而不是"esc"可以提供帮助.
此外,您可以使用"ctrl + s"向前搜索
编辑:如果没有向你的终端发送"停止",ctrl + s有效,即"stty -a"给你"-ixon".你可以用"stty -ixon"来改变它.感谢@Phil提醒.
我的bash按照你的期望工作.也许点击"ctrl + C"而不是"esc"可以提供帮助.
此外,您可以使用"ctrl + s"向前搜索
编辑:如果没有向你的终端发送"停止",ctrl + s有效,即"stty -a"给你"-ixon".你可以用"stty -ixon"来改变它.感谢@Phil提醒.
我从来没有试过在使用Escape时将其设置为默认值,但bash readline
用于输入,默认情况下接受Emacs样式的键绑定,因此您可以使用M->
(通常通过组合Meta/Alt和/ >
或通过跟随Escape键使用)>
).
如果M->
由于您的终端不允许您输入该功能而无效,请尝试^G
(G
同时控制).这是Emacs中的"取消"中风,通常也适用readline
.
得到了这个问题的确认答案.
要重置ctrl-r,通常的emacs键ctrl-g可以执行.如果你想将ctrl-r反向一步,而不是再次从底部向上移动,你可以使用ctrl-s.诀窍是ctrl-s也用于暂停终端.所以你需要将它分配给另一个键.例如,以下内容将暂停设置为ctrl-w(并使用ctrl-q保持"resume").
$ stty STOP ^w
或者,您也可以完全禁用XON/XOFF(恢复/暂停)流控制字符
$ stty -ixon -ixoff
这也将释放ctrl-s.要重新启用暂停/恢复,您可以这样做
$ stty ixon ixoff