job_start()
job_start() はコマンド実行後、すぐに戻りたいときに使う
code:vim
job_start({command} {options})
param
command:実行するコマンド
options:
return
開始したジョブのジョブオブジェクトを返す
command
文字列 or リスト
文字列
Windows の場合
文字列のほうがいい
Unix の場合
"で囲んだ引数には空白を含めることができる
job_start('echo "hello world"')みたいな?
リスト
Unix での実行に適している
1つ目の要素はコマンド、それ以外は引数となる
説明
ジョブの終了は待たない
ジョブの起動に失敗した場合
コールバック関数は呼び出されない
code:vim
:let chrome_job = job_start('chrome.exe') " 何も表示されない(失敗したのかも?)
:!start chrome.exe " Chromeが表示された
ジョブオブジェクトの扱いについて
ジョブオブジェクトは参照されない場合、削除される
stdin と stdout を閉じて、エラーによってジョブの失敗になることがある → なんで!?
ジョブを実行するときは
code:vim
:call job_start('my_job_cmd')
ではなく
code:vim
:let my_job = job_start('my_job_cmd')
とし、ジョブが必要なくなったら、:unlet my_jobする
また、関数ローカルなジョブオブジェクトを作成してしまうと、関数を抜けたあとにそのジョブオブジェクトは削除されてしまうため、失敗してしまうかもしれない
s: か g: がいいかも?
options
関連