在bash控制-R反向我search:你如何“重置”在Cygwin的search?

问题:你如何看待Ctrl + R反向search来“重置自己”,每次都从历史的底部开始search?

背景:在Bash中使用反向search时,一旦search完历史logging,我总是被卡住,并且找不到任何匹配。 有时我打Esc并再次调用Ctrl + R ,期待它从我的历史底部开始一个全新的search。 然而,“指针”似乎仍然是在我的历史中遗留下来的地方。

问题是,我通常不希望这种行为。 如果我点击了Esc ,然后重新调用Ctrl + r ,我希望表明它应该从底部重新开始并重新开始工作。

更新:我想我应该提到我在Windows上使用Cygwin,因为没有提到的解决scheme的工作。

更新:这个问题被标记为潜在的重复问题 。 由于以下原因,此问题不重复:

  • 另一个问题不涉及Cygwin。
  • 另一个问题不涉及如何将search重置为初始状态(而是处理简单地向后search以及向前search)。

我从来没有尝试过这个默认情况下,当击中逃脱,但bash使用readline的input,默认接受Emacs风格的键绑定,所以你可以去M-> (通常要么通过组合Meta / Alt和>或按下Escape键> )。

如果M->不起作用,因为您的terminal不允许您input,请尝试^G (同时控制和G )。 这是Emacs中的“取消”笔画,通常也与readline一起readline

我的bash按照您的预期工作。 也许点击“Ctrl + C”而不是“Esc”可以帮助。

另外,你可以使用“ctrl + s”

编辑 :Ctrl + s的作品,如果它不发送“停止”到您的terminal,即如果“stty -a”给你“-ixon”。 你可以用“stty -ixon”来改变它。 感谢@Phil提醒。

得到了这个问题的确认答案。

要重置CTRL-R,通常的emacs键ctrl-g可以做到。 如果你想通过一步反转CTRL-R,而不是再次从底部工作,你可以使用CTRL-S 。 技巧是ctrl-s也被用来暂停terminal。 所以你需要把它分配给另一个键。 例如,下面将把ctrl-w设置为暂停(并用ctrl-q保持“继续”)。

 $ stty STOP ^w 

或者,您也可以完全禁用XON / XOFF(恢复/暂停)stream量控制字符

 $ stty -ixon -ixoff 

这也将释放ctrl-s。 要重新启用暂停/恢复,您可以这样做

 $ stty ixon ixoff 
 M-> ... moves to end of history M-< ... moves to start of history 

您的左Alt键很可能是您的Meta键。

男人readline更readline指令。