reverse-search-history
默认情况下与 Cr 绑定。您可以键入 Cr 开始搜索,然后再次键入 Cr 跳转到较早的匹配项。
我已经绑定reverse-search-history
到 \er (Alt-r)。此新绑定适用于初始搜索,但随后按 Alt-r 不会继续搜索。 Cr似乎仍然需要重复向后搜索。
有没有办法让 Alt-r 也适用于重复功能?或者将“继续搜索”功能绑定到默认键以外的任何键的方法?我能够在 emacs 中做到这一点,但找不到 bash/readline 的任何相关文档。
答案1
经过一些测试我得到了这个答案:
在Linux虚拟控制台,“Alt-R”在 中产生“^[r” showkey -a
,即“Esc”和“r”,并且 Escape 通过删除搜索字符串来停止反向搜索。
在xterm, 有用;显示\M-r
为“ò”:
]# bind -p |grep ' reverse-se'
"\C-r": reverse-search-history
"\e[172": reverse-search-history
"\e[1;3A": reverse-search-history
"ò": reverse-search-history
正如您所描述的,“\e...”仅部分起作用(它是修改后的向上箭头)。
man bash
确实有一些信息:
convert-meta (On)
If set to On, readline will convert characters with the eighth bit set to an
ASCII key sequence by stripping the eighth bit and prefixing an escape char-
acter (in effect, using escape as the meta prefix). The default is On, but
readline will set it to Off if the locale contains eight-bit characters.
这里是 readline 变量:
isearch-terminators
... If this variable has not been given a value,
the characters ESC and C-J will terminate an incremental search.