我正在使用一些终端功能在bash. 我想得到这样的东西:在输出字符串时PROMPT_COMMAND,保存终端光标位置,打印放置...并执行其他操作(例如打印其他信息);然后一段时间后回到记忆的位置并打印一些新的东西。PS1被设计成命令本身放在换行符上,因此异步输出只是终端中的文本。
我发现cupterminfo 条目将光标移动到给定位置,还有转义码可以获取当前位置(例如,请参阅此问题)。但对我来说,似乎所有这些都在屏幕上使用光标位置,而不是在终端缓冲区中。这意味着在放置新行后,我记住的位置将是错误的。
有没有办法使用终端光标位置来根据缓冲区位置存储和恢复光标位置?您可以假设记住的位置仍然在缓冲区的可见部分(因此您实际上可以将光标放在那里),但它可能会向上移动几行。现在,让我们不考虑竞争条件。如果没有,我会尝试寻找其他技巧。
有zsh外壳实际上具有异步提示支持,但我实际上不知道它是否会在输出之前用户按下Enter以转到新行。