如何从node.js REPL启动编辑器如vi或emacs?

我想从node.js REPL启动像vi或emacs这样的编辑器。

到现在为止,我尝试了两种方法:

  1. 节点插件

    下面是我的editor.cc样子:

     const char *tempFile = "TEMP_FILE"; // File to be opened with the editor Handle<Value> launchEditor (const Arguments& args) { const char *editor = "vi"; Local<String> buffer; pid_t pid = fork(); if (pid == 0) { execlp(editor, editor, tempFile, NULL); // Exit with "command-not-found" if above fails. exit(127); } else { waitpid(pid, 0, 0); char *fileContent = readTempFile(); // Simple file IO code to read file. buffer = String::New(fileContent); free(fileContent); } return buffer; } // MAKE IT A NODE MODULE void Init(Handle<Object> target) { target->Set(String::NewSymbol("editor"), FunctionTemplate::New(launchEditor)->GetFunction()); } NODE_MODULE(editor, Init) 

    当我有节点v0.6.12(用node-waf编译)时,这工作,但是当我更新节点到v0.8.1,这段代码停止工作(用node-gyp gyp编译)。 编辑器根本没有出现,并且文件内容被读取并返回(使用emacs),或者编辑器作为后台进程运行(使用vi)! 有什么我需要改变它的工作与0.8.1?

    即使编辑器是作为后台进程启动的,我是否可以将其从代码本身带到前台?

  2. Child_process模块

     spawn = require('child_process').spawn; editor = spawn('emacs', ['TEMP_FILE']); 

    但是这不能正常工作。 使用emacs,它显示错误input is not a tty和vi提供了一个奇怪的接口。

有人可以帮助上面的任何解决scheme,或build议一些其他的工作解决scheme?

我刚刚在一个星期前偶然发现了一个,你应该试试看: 节点编辑器