如何使用reverse-i-search命令(ctrl + r)转发历史记录?


12

在readline手册中

# man readline

下面介绍如何向后和向前搜索。

reverse-search-history (C-r)
Search backward starting at the current line and moving `up' through the history as necessary.  This is an incremental search.

forward-search-history (C-s)
Search forward starting at the current line and moving `down' through the  history  as  necessary.   This  is  an  incremental search.

当我按下ctrl + r并键入“ apt-get”时,我可以通过连续点击ctrl + r来进行反向搜索。但是然后我点击ctrl + s,终端就不前进了。我做错了什么吗?

元前缀“ M-”还代表什么键?

Answers:


15

该序列C-s取自终端驱动程序,如您所见

stty -a | grep '\^S'

要释放该序列供readline使用,请将终止端子序列设置为其他序列,例如

stty stop ^J

或将其与

stty stop undef

之后,C-s将在给定的终端中工作。

设置它~/.bashrc以使其在每个终端中均可使用。

如前所述,该M-序列表示Alt密钥。


^ J是一个不错的选择,因为for stop,它没有用于其他任何用途
滚刀

3

除了如上所述分配其他的TTY'stop'字符外,如果您不打算使用它,则可以将其完全删除(我倾向于不这样做),如下所示:

$ stty stop undef

然后readline可以使用control-s进行正向搜索,并且由于添加了新的stop char,您不会有任何奇怪的行为。


这是一个更好的方法。
A.Danischewski

1

前向搜索历史记录(Cs)不起作用(尽管它在手册页中)。

“ M-”代表Alt键修饰符。


1
不正确的C-s部分,请参阅我的答案。
enzotib 2011年

0

请不要使用:

stty stop ^J

stty stop ^P

或其他任何^J问题,因为ssh造成了大问题。(无论如何我都不知道为什么。)登录后Enter,反斜杠不起作用。或我必须输入:

stty sane 
export TERM=linux

在我想输入之前

ssh root@192...

所以

stty stop ^P

同时解决了两个问题。


0

您可以禁用XON / XOFF流控制:

stty -ixon

在您的〜/ .profile或类似文件中,则将识别Ctrl + S。


0

在使用反向搜索(使用Ctrl-R命令)时要向前切换:

  1. 打开您的.bashrc文件:
    sudo gedit ~/.bashrc

  2. 添加此行(字母“ f”可以替换为系统尚未使用的另一个字母)

    bind '"\C-f": forward-search-history' 
    
  3. 闭上你的文件,并更新你的.bashrc(或打开另一个终端)使用命令:
    source ~/.bashrc. ~/.bashrc

现在,您可以通过快捷键在历史记录中前进:Ctrl + f

在Ubuntu 18.04 LTS上工作


0

请注意,我曾经使用

stty stop ^J
stty -ixoff

在.bashrc中启用向前搜索并禁用烦人的“按下ctrl + s时在Konsole中出现“输出已通过按Ctrl + S暂停。按Ctrl + Q恢复”的消息,但是两个命令都分别中断了Dolphin中Konsole集成( (“ F4”快捷键)的方式(我必须执行两次ctrl + c才能使其正常工作),以及在图形化导航时未注入自动“ cd”命令的方式。

所以我现在更喜欢:

stty stop undef
stty -ixon

它具有相同的效果,所有功能似乎都能按预期工作;)

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.