尝试学习lisp(我猜emacs一起)。 我想知道如何清除输出并更换它。 可以是LISP repl,也可以是emacs缓冲区 类似于python中的以下内容。
def go(r):
for i in range(r):
sys.stdout.write("\rDoing %i" % i)
sys.stdout.flush()
答案 0 :(得分:7)
对于常见的lisp,您正在寻找
Functions FINISH-OUTPUT, FORCE-OUTPUT, CLEAR-OUTPUT
:
finish-output
,force-output
和clear-output
控制缓冲流输出的内部处理。
finish-output
尝试确保发送到输出流的任何缓冲输出已到达目的地,然后返回。
force-output
启动清空任何内部缓冲区,但不等待完成或确认返回。
clear-output
尝试中止正在进行的任何未完成的输出操作,以便尽可能少的输出继续到目的地。
和
*debug-io*
的值,称为调试I / O,是用于交互式调试目的的流。
*error-output*
的值,称为错误输出,是应向其发送警告和非交互式错误消息的流。
*query-io*
的值,称为查询I / O,是在询问用户问题时使用的双向流。问题应输出到此流,并从中读取答案。
*standard-input*
的值,称为标准输入,是一个流,当没有显式提供特定输入流时,许多运算符将其用作默认输入源。
*standard-output*
的值,称为标准输出,是一个流,当没有显式提供特定的输出流时,许多运算符将其用作输出的默认目标。
*trace-output*
的值,称为跟踪输出,是跟踪函数(请参阅跟踪)和时间宏打印其输出的流。
Emacs Lisp完全不同,你可能想从这里开始:https://www.gnu.org/software/emacs/manual/html_node/elisp/Output-Functions.html