【问题标题】:How to reverse-i-search back and forth? [duplicate]如何来回反向搜索? [复制]
【发布时间】:2012-09-04 14:41:36
【问题描述】:

我经常使用reverse-i-search,这很酷。有时,虽然多次按下 CTRL+r 时,我 pass 我实际上正在寻找的命令。因为 CTRL+r 在历史上向后搜索,从最新到最旧,我必须:

  1. 取消,
  2. 再次搜索并
  3. 完全停在命令处,不通过它。

reverse-i-search 提示符下,是否可以向前搜索,即从我所在的位置到最新的位置。我天真地尝试了 CTRL+Shift+r,没有运气。我听说过 CTRL+g 但这不是我所期望的。有人有想法吗?

【问题讨论】:

  • 我想这更像是一个超级用户的问题:superuser.com/questions/472846/…
  • 在 Ubuntu 上肯定是 Ctrl+Shift+R
  • @m-ric 你说这更像是一个超级用户的问题。在这里,它有 88 票赞成。在超级用户中,它有 6 个赞成票。
  • @valk 否,在 WSL2 内的 Ubuntu 20.04 上 Ctrl+Shift+RCtrl+R 执行完全相同的操作。

标签: linux bash shell search


【解决方案1】:

这里有一个类似的问题:

Control-r reverse-i-search in bash: how do you "reset" the search in Cygwin?

在超级用户上发现另一个类似的问题:

(reverse-i-search) in Bash

显然,两者都提到了 Ctrl+s,这可能会奏效。

希望对您有所帮助。我自己正在尝试找到一段代码来执行reverse-i-search,以检查它是如何实现的。

【讨论】:

  • ctrl-s - 标准 emacs。
  • 重要提示:要使^-S 正常工作,请将stty -ixon 添加到您的bash 配置文件中(Linux 上为~/.bashrc,OSX 上为~/.bash_profile)。另请注意,通过按下相应的其他键盘快捷键来反转方向最初是 no-op - 所有变化都是显示的前缀(reverse-i-searchi-search)。因此,要真正向另一个方向迈出 1 步,请按键盘快捷键两次
  • 无操作是什么意思? stty -ixon 到底是做什么的?
  • @zyxue noop 表示“无操作”。这意味着快捷方式被映射为“什么都不做”。见here。如果不设置-ixon,ctrl-s 会告诉终端停止更新,这意味着您必须按下 ctrl-q 才能恢复正常操作。通过设置 -ixon 可以禁用该行为,它将 ctrl-s 映射到 i-search
  • @gdupont 看起来 i-search 是 readline 的一部分。来源在这里:git.savannah.gnu.org/cgit/readline.git/tree/isearch.c?h=devel
【解决方案2】:

CTRL + S

...使用后为我解决了...

stty -ixon

如果 CTRL+S 对您不起作用是因为根据 Vincenzo Pii's 在另一个相关线程中接受的答案:

问题是这个绑定,在很多终端,默认是用来发送暂停传输码(XOF)的。

man stty

[-]ixon
    enable XON/XOFF flow control

因此,如果您在终端上启用了此选项(stty -a 的输出包含 ixon 而前面没有 - 符号),则不能使用 CTRL+ Sreverse-i-search 的上下文中。

要禁用它,请使用以下命令:

stty -ixon

CTRL+S 会给你一个(i-search)(非反向)。

【讨论】:

  • 在我的情况下 -ixon 被禁用但由于某种原因 ^S 符号仍然按字面意思安装。我在lxterminal
【解决方案3】:

试试delete,效果神奇。

其他人指向CTRL+s,但对我不起作用。

【讨论】:

  • 先尝试运行stty -ixon。如果有帮助,请将其添加到您的 bash 个人资料中。
  • 它有效,但你能解释一下stty -ixon 究竟做了什么吗?
  • 删除对我没有任何作用
猜你喜欢
  • 1970-01-01
  • 2021-10-03
  • 2018-06-08
  • 2012-01-25
  • 1970-01-01
  • 2021-07-31
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多