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

如何在linux中的emacs或Vim等编辑器中查看程序的控制台输出?,linux,emacs,console,vi,Linux,Emacs,Console,Vi,假设我有一个简单的程序: (伪代码) 对于(i=0;i至少在emacs中,您可以打开一个终端窗口并将其放在一边。尝试M-xansi-termRET。然后您可以使用不同的C-x划分屏幕。(启动进程“我的进程”“foo”“ls”“-l”“/user/lewis/bin) ⇒ # ----------缓冲区:foo---------- 总数2 LRWXRWX 1 lewis 14 Jul 22 10:12 gnuemacs-->/emacs -rwxrwxrwx 1刘易斯19 Jul 30 21:02

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


对于(i=0;i至少在emacs中,您可以打开一个终端窗口并将其放在一边。尝试M-xansi-termRET。然后您可以使用不同的C-x划分屏幕。

(启动进程“我的进程”“foo”“ls”“-l”“/user/lewis/bin)
⇒ #
----------缓冲区:foo----------
总数2
LRWXRWX 1 lewis 14 Jul 22 10:12 gnuemacs-->/emacs
-rwxrwxrwx 1刘易斯19 Jul 30 21:02 lemon
进程我的进程完成了
进程我的进程完成了
----------缓冲区:foo----------

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

您可以使用“ansi术语”和您自己的程序(您可以用它代替我的示例中使用的“top”过程)执行类似于以下的操作:


这实际上是emacs中内置的:)

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

启用尾部模式时,文件的尾部将持续显示 然后是shell命令“tail-f”。这意味着 每当文件在磁盘上增长时(可能是因为 后台进程不时附加到它),这是 反映在当前缓冲区中


请对此进行更多解释,这会有所帮助。这将启动一个异步进程,其输出将附加到给定的缓冲区。如果您想以编程方式与进程交互,这是一种方法,如果您只想运行命令,请使用m-x术语或shell
for(i=0;i<1000;i++)
{
   print(i + "\n");
   sleep(1);
}


Output:
0
1
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 ----------
(progn 
  (ansi-term "/bin/sh" "top")
  (goto-char (point-max))
  (insert "top")
  (term-send-input))
M-x auto-revert-tail-mode