在 Vim 中,我可以在输出时将例如 "w !ruby" 的输出“流”到缓冲区中吗?

Hen*_*k N 5 vim

我目前正在做这样的事情:

redir => m
  silent w ! ruby
redir END
new
put=m
Run Code Online (Sandbox Code Playgroud)

它将当前缓冲区的内容作为 Ruby 代码执行,并将输出放入新缓冲区。

但如果我运行的 Ruby 代码类似于

puts "start"
sleep 10
puts "end"
Run Code Online (Sandbox Code Playgroud)

然后我将在 10 秒内看不到输出,然后同时“开始”和“结束”。

是否有某种方法可以将输出“流”到缓冲区,就像它出现的那样逐行?所以我会看到“开始”,然后 10 秒后我会看到“结束”?类似于如果我只是这样做会发生什么

w ! ruby
Run Code Online (Sandbox Code Playgroud)

并查看命令行下的输出。

Hen*_*k N 0

因此,一种可能的解决方案(希望不是最好的解决方案)是写入磁盘上的文件,在缓冲区中打开该文件,然后:setlocal autoread文件更改时会自动更新。

不过,这种自动更新看起来相当粗糙。Tail Bundle.vim似乎对此有所改进。

希望有更好的答案。