Vim:警告:不输出到终端

时间:2015-03-13 21:56:26

标签: python c++ unix vim sh

我正在运行一个运行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 ++二进制文件挂起。

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

2 个答案:

答案 0 :(得分:3)

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

如果您可以修改脚本以便它专门处理vim,则有一个修复:修改运行vim的命令,以便它们重定向到/dev/tty。这将改变看起来像这样的命令字符串

vim filename

vim filename >/dev/tty

答案 1 :(得分:0)

您可以尝试使用

export TERM=vt100

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