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

4
当我输入一些文本,然后按下Ctrl+R,部分输入的文本将出现在反向搜索提示中:
> hello[Ctrl+R]
(reverse-i-search)`': hello

我希望编写一个替代反向搜索的程序。这个快捷键可以重新绑定以运行不同的程序,例如:

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

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

Tab键自动补全设置了COMP_WORDSCOMP_LINE等变量。 我正在寻找类似的东西,最好可以由C / C ++可执行文件直接访问。

1个回答

3

我在这里找到了我需要的东西: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 用于设置光标位置。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接