Vim:警告:输出不到终端

Vim: Warning: Output not to a terminal

本文关键字:终端 输出 警告 Vim      更新时间:2023-10-16

我正在运行一个运行python脚本的C++二进制文件。我通过以下方式执行此操作

stream = popen(cmd.c_str(), "r");
if (stream) {
  while (!feof(stream))
    if (fgets(buffer, max_buffer, stream) != NULL) data.append(buffer);
  status = pclose(stream);
}

这个python脚本还使用子进程运行一些shell命令

subprocess.check_call(arg_list)

突然间,我开始收到诸如"Vim:警告:输出不到终端"之类的错误,并且C++二进制挂起。

修复它的最简单方法是什么?

popen调用将读取子进程写入其标准输出的任何内容。 其中一些可能很有用(例如状态消息)。 你不会从 vim 的标准输出中获得有用的结果,因为它将是部分转义序列(用于移动光标、更改颜色)。

如果可以修改脚本以使其专门处理 vim,则有一个修复方法:修改运行 vim 的命令,以便它们重定向到 /dev/tty 。 这将更改如下所示的命令字符串

vim filename

vim filename >/dev/tty

您可以尝试使用

export TERM=vt100

在调用 Perl 之前或作为每个 Unix 子进程中的第一个命令。