0

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

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

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

我想出了如何用 vim 做到这一点:

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

但是我将如何使用 sublime 做到这一点?如果我用 subl 替换 vim,它会打开 sublime,但会立即返回文件的当前值,并且不会等到我将文件保存在 sublime 中。可能的?

4

1 回答 1

1

您需要运行subl-w切换--wait

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

如果设置了环境变量,我建议您使用环境变量,而不是硬编码subl或在您的应用程序中:vimEDITOR

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
  // ...
}
于 2013-10-21T20:22:52.193 回答