我目前正在做这样的事情:
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)
并查看命令行下的输出。
因此,一种可能的解决方案(希望不是最好的解决方案)是写入磁盘上的文件,在缓冲区中打开该文件,然后:setlocal autoread文件更改时会自动更新。
不过,这种自动更新看起来相当粗糙。Tail Bundle.vim似乎对此有所改进。
希望有更好的答案。