spawnでviを起動する

nodeの実行時にvi起動したくて例えばperlとかだと

system 'vi /tmp/foo.txt';

とかで起動できて簡単なんだけどnodeで

var exec = require('child_process').exec;
exec('vi /tmp/foo.txt', function() { ... });

とかやっても起動しないのでどうしたもんかと思って調べた。

var spawn = require('child_process').spawn;
var vi = spawn('vi', ['/tmp/foo.txt'], {
  customFds: [
    process.stdin,
    process.stdout,
    process.stderr
  ]
});

これでいけるみたいだけどcustomFdsがよくわかりません><

customFds は新しいプロセスの [stdin, stdout, stderr] を既存のストリームに接続することを可能にします; -1 は新しいストリームが作られなければならないことを意味します。

http://nodejs.jp/nodejs.org_ja/api/child_processes.html

デフォルトは customFds: [-1, -1, -1] なので、何も指定しないと新しいストリームになるので既存のprocessのストリームを指定すればいいということかな