在Emacs Shell-Mode中显示stdout为Received

时间:2016-07-27 14:10:59

标签: shell emacs

有没有办法让Emacs Shell-Mode显示输出,因为它接收它而不是等待上一个命令完成?

例如:

python -c "import time; print  'hello'; time.sleep(3); print '...goodbye'"

将暂停3秒然后打印"你好"并且" ...再见"同时。我试图让它打印"你好",等待三秒钟,然后打印" ...再见"。

我在Windows 7上运行Emacs 25.0.93.1。

1 个答案:

答案 0 :(得分:0)

我相信正在发生的事情是"你好"卡在输出缓冲区中并且在程序退出之前不会输出(或缓冲区填满更多)。当我在bash控制台窗口(emacs之外)中运行代码时,也会发生这种情况。

您可以使用sys.stdout.flush()手动刷新输出缓冲区,这将导致缓冲区中的文本(" hello")立即显示。

我在emacs的shell,eshell和term模式中测试了以下代码(注意我还将print语句转换为python3语法):

python -c "import time; import sys; print ('hello'); sys.stdout.flush(); time.sleep(3); print ('...goodbye')"