为什么我不能让 bash 使用前向增量搜索?

为什么我不能让 bash 使用前向增量搜索?

最近,我读到了几篇关于如何更有效地使用 bash 的提示文章,其中提到了我从未尝试过的组合:Ctrl-S(在提示符中,不运行任何命令)从 Ctrl-R 进行另一种搜索方式。由于我经常使用 Ctrl-R,这很有趣。

但是,我无法在我有权访问的任何 bash 安装上激活它(Mac OS Catalina、Windows 版 Git、通过 ssh 的 Debian 10、通过 ssh 的 NixOS)。由于他们中的大多数都有各种可能会干扰的自定义,我也尝试过--noprofile --norc,但无济于事。

在每种情况下,我当然首先在历史中选择合适的行,以便有“前进”来搜索,然后尝试关键和弦,但没有任何反应。 (不仅没有提示,输入任何字符都会将它们放入行中而无需搜索。)同样,首先使用 Ctrl-R 查找某些内容。

该文档听起来像是开箱即用的。那么这是什么一回事?

答案1

默认快捷方式CtrlS与 XOFF 控制流命令的快捷方式冲突。这可以通过禁用 XOFF 命令或使用 readline 命令的另一个键绑定来测试:

stty -ixon  # or,
bind '"\C-f": forward-search-history'

我不能确定为什么使用这个快捷方式。至少从那时起它就成为默认值bash 1.1130年前发布。但如果让我猜的话,我会这么说,因为这些是emacs键绑定和 emacs(通常完全控制终端的应用程序)CtrlS作为快捷方式使用可能没有问题,因此无论谁将其添加到 bash 中,都可能只是将其用作默认值,而无需考虑太多。显然 readline 应该关闭 BSD 的 XON/XOFF从 1.03 开始,所以想必他们只是没有注意到它在其他系统上默认不起作用。

相关内容