Javascript 从终端应用程序打开升华,获取添加到文件的文本结果
所以我想做的是结合我在这里已经问过的一个问题: " 我正在制作一个命令行应用程序。我想让用户在为终端中的内容添加值时,能够使用文本编辑器添加值。git是如何实现这一点的 我想打开他们的默认编辑器,允许他们输入文本,当他们保存时,获取值并将该值用于我的应用程序。 " 我想出了如何使用vim实现这一点: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
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获取编辑器值