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