Vim 警告:输出不是到终端

Vim Warning: Output is not to a terminal

我不明白为什么,几周后我不确定发生了什么变化,我在尝试执行这个 vim 函数时遇到了一个奇怪的错误:

function! P4diff()
       aboveleft 40new
       setlocal nomodified buftype=nofile nowrap filetype=diff
       %!p4 diff #
       setlocal nonu                                                                    
       setlocal
       readonly                                                                
       syntax on
    :endfunction

我收到错误:

Vim: Warning: Output is not to a terminal
Vim: Warning: Input is not from a terminal
[51;1H"tmp.15529.64" [RO][converted] 119L, 2893C
"ProxyChain.java"                         [51;19H[converted] 115L, 2943C
Vim: Error reading input, exiting...
Vim: Finished.
[51;1H

2 个要编辑的文件

有人知道为什么吗?

当您使用 :{range}! 命令通过外部程序过滤行时,Vim 将行发送到 stdin 并重定向 stdout 以捕获输出。

看起来您调用的 p4 diff 命令在内部使用 Vim(可能作为寻呼机),并且该从属 Vim 实例正在抱怨上述警告。在非交互式使用 p4 时,您可能希望禁用分页(可能有一个控制它的命令行参数或环境变量)。