3
如果您使用+ ruby編譯Vim的最新版本,則可以在Vim中使用:ruby命令。異步Ruby如何在Vim中工作?
當我運行一些異步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窗口。
是的,Vim是單線程的。有一些異步庫([this one])(http://www.vim.org/scripts/script.php?script_id=3307),[this one](https://github.com/rygwdn/vim-異步),可能還有其他...),您可能會感興趣。 – romainl