如何在linux中的emacs或Vim等编辑器中查看程序的控制台输出?

时间:2011-09-09 11:20:51

标签: linux emacs console vi

假设我有一个简单的程序: (伪代码)

for(i=0;i<1000;i++)
{
   print(i + "\n");
   sleep(1);
}


Output:
0
1
2

有没有办法在emacs或Vi等编辑器中查看此输出? 我想要的行为就像是在连续写入的文件上完成的“tail -f”。

5 个答案:

答案 0 :(得分:4)

这实际上内置于emacs :)

M-x auto-revert-tail-mode

从C-h f自动恢复尾部模式:

  

启用Tail模式后,文件的尾部会一直显示   跟着,就像shell命令`tail -f'一样。这意味着   每当文件在磁盘上生长时(大概是因为某些文件)   后台进程不时附加到它上面,这是   反映在当前缓冲区中。

答案 1 :(得分:2)

至少在emacs中,您可以打开一个终端窗口并将其放在一侧。尝试 M-x ansi-term RET 。然后你可以使用不同的 C-x &lt; number&gt;来划分屏幕。

答案 2 :(得分:2)

          (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 ----------

答案 3 :(得分:2)

在Emacs中,有M-x shell-command,以及用于监视命令输出的各种专用模式。您还可以在Emacs中使用M-x shell运行shell。将进程从elisp直接输出到Emacs缓冲区也不难;请参阅start-process的文档(C-h f start-process RET)。

答案 4 :(得分:1)

您可以使用“ansi-term”和您自己的程序(您可以替代我的示例中使用的“顶部”进程)替换以下内容:

(progn 
  (ansi-term "/bin/sh" "top")
  (goto-char (point-max))
  (insert "top")
  (term-send-input))