vital.vim ProcessManager

vital.vimのProcessManagerについて書いてみます。

まだ使い始めたばかりなので、後々追記していきます。

ProcessManager

ujihisaさん作、vim業界を震撼させると言われているvitalモジュールです。

その名の通りプロセスを管理します。

基本的に上のリンクを見れば全て解決しますw

そもそも何も難しいことはなくて、プロセスを起動して、そのプロセスの標準入力に書き込んだり、出力を読んだりを簡単にさせてくれるというものです。

これ以上ないほどに簡潔でわかりやすいので、そもそも説明が不要かもしれません。

docの例を見るのが使い方を知る上では適切です。

関数

is_available()

ProcessManagerが使える環境であるかどうかを返します。(=vimprocが使える。ProcessManagerはvimprocに依存しています。)

touch(name, cmd)

nameで指定された名前のプロセスが既に存在していれば何もせず'existing'を返します。

存在していなければ、cmdのプロセスを起動して'new'を返します

new(cmd)

cmdのprocessを起動します。名前はauto_incrementな感じで割り振られるようです。

割り振られた名前を返します。

stop(i)

iで指定された名前のプロセスをkillします。

read(i, endpatterns)

read_wait(i, wait, endpatterns)

これについてはhttps://gist.github.com/ujihisa/5761509に説明があるのでそちらを見てもらったほうがいいです。

iで指定されたプロセスが起動していなければ、例外を投げます。

プロセスのstatusがinactiveな場合は、['','','inactive']を返します

そうでない場合、endpatternsにマッチするまで標準出力、標準エラー出力を読み込みます。

endpatternsにマッチしていないのに出力が全くない時間がwait秒経過すると、timedoutを返します。

write(i, str)

iで指定されたプロセスの標準入力にstrを書き込みます。

writeln(i, str)

iで指定されたプロセスの標準入力にstrと改行を書き込みます。

status(i)

iで指定された名前のプロセスの状態を返します。

プロセスが起動されていなければ例外を投げます。

プロセスが起動されていれば、activeであるかinactiveであるかを返します。

debug_processes()

起動されているプロセスを返します

使ってみよう

後でまた書く。blogではこういうの向いてないですね