Linux 如何使VIM接收并显示正在运行的程序的输出?

Linux 如何使VIM接收并显示正在运行的程序的输出?,linux,vim,terminal,Linux,Vim,Terminal,当我使用VIM运行交互式程序时,例如: :!node server.js :!python my_app.py 该程序通过console.log、print等方式显示的消息将仅在程序进程终止时在vim上以单个块的形式显示。这与直接在终端上运行它们不同,终端上实时显示消息。如何修复此行为?使用vim 8的Terminal功能,您只需执行:term node server.js或:term python my_app.py 请参阅:help:terminal,了解更多信息。输出很可能是缓冲的,因为

当我使用VIM运行交互式程序时,例如:

:!node server.js
:!python my_app.py

该程序通过
console.log
print
等方式显示的消息将仅在程序进程终止时在vim上以单个块的形式显示。这与直接在终端上运行它们不同,终端上实时显示消息。如何修复此行为?

使用vim 8的Terminal功能,您只需执行
:term node server.js
:term python my_app.py


请参阅
:help:terminal
,了解更多信息。

输出很可能是缓冲的,因为它认为不需要查看。您尝试从vim运行交互式程序有什么原因吗?您能提供更多详细信息吗?我在terminal vim(程序运行时使用
直接使用terminal,因此它们的行为与从shell运行它们没有一点区别)和
gvim
(使用
测试:!echo 0;sleep 1;echo 2
)中都没有看到这种行为。在最后一种情况下,应用程序不会在终端上运行,因此它们的行为可能会有所不同。如果
:!回声0;睡眠1;echo 2
测试显示0和2以1秒的间隔显示(首先是立即显示),然后您应该询问您运行的应用程序的开发人员。@FDinoff无需运行交互式程序即可立即了解输出:例如,如果您运行生成脚本,您可能希望在出现早期错误时中止生成,请修复它并重新运行。还请注意,由于使用了底层终端,所以在终端vim中运行交互式应用程序是非常好的。在gvim中,这也是可能的。如果您编写的插件出于某种原因必须运行此交互式脚本,那么这是有意义的:在插件中,您无法切换到带有
/
:suspend
的shell并在那里运行某些内容(您实际上可以切换,但无法运行)。