我可以使用bash bind
提交一些函数给出的字符串来预先填充\C-s
查询吗?我希望我能做到
bind '"\e\C-i": "\C-s$(echo "$FOO")\C-j"'
但这只是搜索确切的(未展开的)$(echo "$FOO")
。
答案 0 :(得分:1)
readline
不支持在宏中评估shell表达式,但有一种解决方法。引入两个辅助键序列绑定,例如
您所需的键序列必须调用2,然后调用1.
以下是上述构思的实际实现,使用辅助键序列"\e\C-o"
和"\e\C-p"
(如果您将其用于其他目的,请不要忘记将它们替换为未使用关键序列):
$ setup_fixedfwdsearchhistory_binding() { bind '"\e\C-o":"\C-s'"$FOO"'\C-j"'; }
$ bind -x '"\e\C-p": setup_fixedfwdsearchhistory_binding'
$ bind '"\e\C-i": "\e\C-p\e\C-o"'