可以说我有一个简单的程序:(伪代码)
for(i=0;i<1000;i++) { print(i + "\n"); sleep(1); } Output: 0 1 2
有没有办法在emacs或vi这样的编辑器中查看这个输出? 我想要的行为就像连续写入的文件上的“tail -f”一样。
至少在emacs中,你可以打开一个终端窗口,并在一边。 尝试Mx ansi-term RET 。 然后你可以使用不同的Cx <number>来划分屏幕。
这实际上内置到emacs 🙂
Mx auto-revert-tail-mode
从自动恢复尾巴模式:
当启用Tail模式时,文件的尾部会一直跟着,就像使用shell命令`tail -f'一样。 这意味着,每当文件在磁盘上增长(大概是因为一些后台进程不时追加到它),这反映在当前的缓冲区。
(start-process "my-process" "foo" "ls" "-l" "/user/lewis/bin") ⇒ #<process my-process<1>> ---------- Buffer: foo ---------- total 2 lrwxrwxrwx 1 lewis 14 Jul 22 10:12 gnuemacs --> /emacs -rwxrwxrwx 1 lewis 19 Jul 30 21:02 lemon Process my-process<1> finished Process my-process finished ---------- Buffer: foo ----------
在Emacs中,有Mx shell命令,以及用于监视命令输出的各种专用模式。 你也可以用Mx shell在Emacs里运行一个shell。 让一个进程直接从elisp产生输出到Emacs缓冲区也不难; 请参阅启动过程的文档(Ch f start-process RET)。
你可以使用“ansi-term”和你自己的程序来做类似于下面的事情(你可以用我的例子中的“top”来代替):
(progn (ansi-term "/bin/sh" "top") (goto-char (point-max)) (insert "top") (term-send-input))