如果你用 +ruby 编译最新版本的 Vim,你可以在 Vim 中使用 :ruby 命令。
当我运行一些异步 Ruby 代码时,“幕后”发生了什么?
例如:
:ruby <<EOS
print 'hello'
Thread.new do
sleep 1
print 'world'
end
EOS
# hello
:ruby print 'foo'
# world
# foo
正如预期的那样,这会立即打印“你好”。但是,在我运行另一个 :ruby 命令之前,'world' 不会打印。Vim 是否只支持一个线程,并将新线程推送到某种队列中以便在下一个 :ruby 命令上运行?
我已经尝试在 中查看 Vim 的源代码src/if_ruby.c
,但我的 Ruby C-Extension 阅读技巧并不是最好的。
我在问,因为我想写一些 Ruby 每隔几秒轮询一次并更新一个 Vim 窗口。