2014-11-30 5 views
2

:help job-control의 Neovim의 작업 제어 예제는 bash 스크립트에서 잘 작동합니다. 그러나, 나는 그것을 루비에서 작동하게 만들 수 없다. 우리가 bash에 대한 그런 루비 예를 들어 작업을 어떻게해야합니까루비를 사용한 Neovim 작업 제어 예제

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

:

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> 실행 : 다음의 예를 고려?

답변

2

루비의 출력이 버퍼링되고있는 것으로 나타났습니다. 하나는 원하는 출력을보기 위해 플러시되도록 강제해야합니다.

원래 문제는 루비 테스트를 비동기 적으로 실행하는 것이 었습니다. 작동 시키려면 파일에 $stdout.sync = true을 작성해야하며 -r :

을 사용해야합니다.