Pet*_*tko 3 history command-line readline
这可能是一个非常简单的问题,但我真的很想知道这是否可能。
如果我使用 Cr 开始反向历史搜索,然后再次按 Cr 多次,我可以在历史记录中搜索更多 cmds。
快按Cr的时候,经常会漏掉一个想用的cmd,所以想找个办法回到之前的cmd。
当前版本的readline可以吗?
该forward-search-history
命令会做你想做的——它会在向前方向上执行增量搜索,如果你已经处于增量搜索模式,它只会在保持当前搜索字符串的同时切换搜索方向。
问题是达到那个命令。默认的 Readline 绑定包含:
"\C-r": reverse-search-history
"\C-s": forward-search-history
Run Code Online (Sandbox Code Playgroud)
但是C-s
是终端流量控制字符,它没有达到bash
(尽管它可以在像 Emacs 这样的程序中工作,这些程序更改终端设置以禁用流量控制处理)。因此默认绑定是无用的,您需要将其他一些键绑定到forward-search-history
命令。
另一个问题是与 Meta 修饰符的键绑定不适用于增量搜索 ——Meta 修饰符实际上添加了 ESC 前缀,即使从isearch-terminators
变量值中删除了 ESC 也会终止增量搜索。与C-x
前缀的组合也不起作用 - 按C-x
立即终止增量搜索。因此,您需要将普通绑定C-<key>
到forward-search-history
命令;然而,所有这些控制字符都已经被 readline 命令占用了,所以你需要牺牲另一个命令来释放forward-search-history
.
实施例~/.inputrc
使用C-t
对于前向搜索(替换transpose-chars
命令):
"\C-t": forward-search-history
Run Code Online (Sandbox Code Playgroud)