2014-10-13 4 views
7

Я бы хотел, чтобы пользователь вводил несколько строк текста, нажав кнопку ввода между каждой строкой, затем завершите ввод нажатием CTRL + D или некоторой такой вещи.Многострочный вход Node.js

С помощью «keypress» я могу поймать EOF, но мне придется обрабатывать все эхо-сигналы, обратную обработку, конечные escape-последовательности и т. Д. Вручную. Было бы намного лучше, если бы я мог использовать «readline», но каким-то образом перехватил CTRL + D (EOF) с помощью «нажатия клавиш», но я не уверен, как бы я это сделал.

ответ

10

Вы можете использовать line и close события:

var readline = require('readline'); 

var input = []; 

var rl = readline.createInterface({ 
    input: process.stdin, 
    output: process.stdout 
}); 

rl.prompt(); 

rl.on('line', function (cmd) { 

    input.push(cmd); 
}); 

rl.on('close', function (cmd) { 

    console.log(input.join('\n')); 
    process.exit(0); 
}); 
Смежные вопросы