我在用jline我有一个整洁的ConsoleReader
一切都很好。但是,如果您在提示符中输入某些内容,并且 stdout 上有输出(来自另一个线程),则输出会拆分您正在输入的单词/命令。
我怎样才能保留jline
终端底部有提示吗?
我在用jline
1,但我愿意使用jline
2、如果足够稳定。
终于弄清楚了...这就是你要做的。首先,定义这些函数:
private ConsoleReader console = ...;
private CursorBuffer stashed;
private void stashLine() {
this.stashed = this.console.getCursorBuffer().copy();
try {
this.console.getOutput().write("\u001b[1G\u001b[K");
this.console.flush();
} catch (IOException e) {
// ignore
}
}
private void unstashLine() {
try {
this.console.resetPromptLine(this.console.getPrompt(),
this.stashed.toString(), this.stashed.cursor);
} catch (IOException e) {
// ignore
}
}
然后当你想输出新数据时,首先调用stashLine()
保存当前控制台输入,然后输出任何新的输出行,然后调用unstashLine()
来恢复它。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)