如何从bash中读取部分输入的文本?

时间:2017-08-19 23:28:16

标签: c bash readline

当我输入一些文字然后 Ctrl + R 时,部分输入的文字出现在反向搜索提示中:

> hello[Ctrl+R]
(reverse-i-search)`': hello

我正在寻找反向搜索的替代品。可以重新绑定快捷方式以运行其他程序,例如:

bind -x '"\C-R":"echo test"'
> hello[Ctrl+R]
test
> hello

如何从我绑定 Ctrl + R 的程序中访问部分输入的命令/文本hello

标签完成设置COMP_WORDSCOMP_LINE等。我正在寻找类似的东西,理想情况下可以通过C / C ++可执行文件直接访问。

1 个答案:

答案 0 :(得分:2)

找到我在此之后的内容:https://unix.stackexchange.com/a/82716/54030

可以读取甚至修改环境变量READLINE_LINE

bind -x '"\C-R":"echo cmd=$READLINE_LINE"'
> hello[Ctrl+R]
cmd=hello

bind -x '"\C-R":"READLINE_LINE=replaced; READLINE_POINT=8"'
> hello[Ctrl+R]
... becomes
> replaced

READLINE_POINT用于设置光标位置。