Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/456.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 从终端应用程序打开升华,获取添加到文件的文本结果_Javascript_Node.js_Bash_Command Line Interface - Fatal编程技术网

Javascript 从终端应用程序打开升华,获取添加到文件的文本结果

Javascript 从终端应用程序打开升华,获取添加到文件的文本结果,javascript,node.js,bash,command-line-interface,Javascript,Node.js,Bash,Command Line Interface,所以我想做的是结合我在这里已经问过的一个问题: " 我正在制作一个命令行应用程序。我想让用户在为终端中的内容添加值时,能够使用文本编辑器添加值。git是如何实现这一点的 我想打开他们的默认编辑器,允许他们输入文本,当他们保存时,获取值并将该值用于我的应用程序。 " 我想出了如何使用vim实现这一点: var vim = require('child_process').spawn('vim', ['test.txt'], {stdio: 'inherit'}); vim.on('exit', p

所以我想做的是结合我在这里已经问过的一个问题:

" 我正在制作一个命令行应用程序。我想让用户在为终端中的内容添加值时,能够使用文本编辑器添加值。git是如何实现这一点的

我想打开他们的默认编辑器,允许他们输入文本,当他们保存时,获取值并将该值用于我的应用程序。 "

我想出了如何使用vim实现这一点:

var vim = require('child_process').spawn('vim', ['test.txt'], {stdio: 'inherit'});
vim.on('exit', process.exit);

但我要怎样才能做到这一点呢?如果我用subl替换vim,它会打开升华,但会立即返回文件的当前值,并且不会等到我将文件保存在升华中。可能吗?

您需要使用
-w
-wait
开关运行
subl

var subl = require('child_process').spawn('subl', ['-w', 'test.txt'], {stdio: 'inherit'});
subl.on('exit', process.exit);
在您的应用程序中,我建议您使用
EDITOR
环境变量,而不是对
subl
vim
进行硬编码,前提是该变量设置为:

if (process.env.EDITOR) {
  var editorArgs = process.env.EDITOR.split(' ');
  var editorExecutable = editorArgs.shift();
  var editor = require('child_process').spawn(editorExecutable, editorArgs.concat(['test.txt']), {stdio: 'inherit'});
  editor.on('exit', process.exit);
} else {
  // Run subl or vim
  // ...
}

太棒了,谢谢!这么简单。谢谢,现在我还知道了如何从node:p获取编辑器值