使用libedit / editline,并尝试找出一种做多行输入/编辑的好方法。目标是SQL客户端,其中查询通常跨越多行并以;
终止。
我可以调用el_gets
,并处理每一行输入,当我看到终止;
时停止。我甚至可以将它们连接起来并将它们存储为el_history中的单个条目 - 当使用箭头滚动历史记录时它将正确访问它们。
但是,当输入命令并开始换行后,我再也无法使用箭头向上移动并编辑上一行。 E.g:
prompt> SELECT * FROM table
WHERE
此时,我希望能够使用向上箭头,向上移动并编辑已在第一行输入的文本。这可能吗?怎么会这样做?我假设在这种情况下使用el_gets
是不正确的,因为它会从编辑行缓冲中删除该行,但我没有看到可行的替代API。
思想?