首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >使用ruby的Neovim作业控制示例

使用ruby的Neovim作业控制示例
EN

Stack Overflow用户
提问于 2014-11-30 10:26:32
回答 1查看 603关注 0票数 3

Neovim在:help job-control中的作业控制示例适用于bash脚本。然而,我无法让它为红宝石工作。请考虑以下示例:

代码语言:javascript
复制
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>会产生以下输出:

代码语言:javascript
复制
Hello Bash!
Hello Bash!
Hello Bash!
Hello Bash!
Hello Bash!
1 exited
Hello Ruby! Hello Ruby! Hello Ruby! Hello Ruby! Hello Ruby!
2 exited

我们如何使红宝石的例子像这样的巴什?

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2014-12-03 03:50:10

结果是红宝石的产量被缓冲了。为了看到所需的输出,必须强制将其冲洗。

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

我最初的问题是异步运行一个ruby测试。要使它工作,我必须将$stdout.sync = true写到文件中,并要求它使用-r

代码语言:javascript
复制
call jobstart('shell', 'ruby', ['-r', '/tmp/opts.rb', '-I', 'test', 'test/unit/user_test.rb'])
票数 3
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/27212236

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档