gpt4 book ai didi

ruby - 使用 ruby​​ 的 Neovim 作业控制示例

转载 作者:太空宇宙 更新时间:2023-11-03 16:00:08 25 4
gpt4 key购买 nike

:help job-control 中的 Neovim 作业控制示例适用于 bash 脚本。但是,我无法让它为 ruby 工作。考虑以下示例:

set nocp
set buftype=nowrite

call jobstart('shell', 'bash', ['-c', 'for ((i = 0; i < 5; i++)); do sleep 2 && printf "Hello Bash!\n"; done'])
call jobstart('shell', 'ruby', ['-e', '5.times do sleep 2 and puts "Hello Ruby!" end'])

function JobHandler()
if v:job_data[1] == 'exit'
let str = v:job_data[0] . ' exited'
else
let str = join(v:job_data[2])
endif

call append(line('$'), str)
endfunction

au JobActivity shell* call JobHandler()

正在运行 nvim -u NONE -S <filename>产生以下输出:

Hello Bash!
Hello Bash!
Hello Bash!
Hello Bash!
Hello Bash!
1 exited
Hello Ruby! Hello Ruby! Hello Ruby! Hello Ruby! Hello Ruby!
2 exited

我们如何使 ruby​​ 示例像 bash 那样工作?

最佳答案

事实证明,ruby 的输出正在被缓冲。必须强制刷新它才能看到所需的输出。

call jobstart('shell', 'ruby', ['-e', '$stdout.sync = true; 5.times do sleep 1 and puts "Hello Ruby!\n" end'])

我最初的问题是异步运行 ruby​​ 测试。为了让它工作,我必须将 $stdout.sync = true 写入文件并使用 -r 要求它:

call jobstart('shell', 'ruby', ['-r', '/tmp/opts.rb', '-I', 'test', 'test/unit/user_test.rb'])

关于ruby - 使用 ruby​​ 的 Neovim 作业控制示例,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/27212236/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com