gpt4 book ai didi

java - 用 jline 预填充一行

转载 作者:塔克拉玛干 更新时间:2023-11-03 05:29:57 27 4
gpt4 key购买 nike

使用 JLine(或 JLine2),是否可以在 ConsoleReader 上发出对 readline 的调用,并且除了标准提示之外,缓冲区是预填充了我选择的字符串?

我试过,例如:

reader.getCursorBuffer().write("Default");
reader.readLine("Prompt> ");

这似乎确实写入了缓冲区,但该行仅显示提示。如果我按回车键,readLine 会返回 "Default",正如我所期望的那样。如果我清除屏幕,缓冲区将重新绘制并正确显示。

我的理解是,我应该以某种方式在调用 readLine 之后立即调用 reader.redrawLine()。然而,最后一个是阻塞的,这使得它变得困难(并非不可能,但为此使用第二个线程肯定感觉不对)。

最佳答案

我今天正好遇到了这个用例。

这有点 hack,但我能够将文本预加载到 JLine 缓冲区中,然后让用户通过这样做来编辑它:

String preloadReadLine(ConsoleReader reader, String prompt, String preload)
throws IOException
{
reader.resetPromptLine(prompt, preload, 0);
reader.print("\r");
return reader.readLine(prompt);
}

是的,\r 的打印是一个 hack,但它似乎可以让事情正常进行。

我正在使用 JLine-2.13。

关于java - 用 jline 预填充一行,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12268461/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com