В ответ на @loganfsmyth прокомментируйте его ответ (спасибо за редактирование!).
Я искал здесь и там, и, кроме чудесного нажатия клавиши , естьбазовый модуль, который позволяет создавать cli
со всеми стандартными режимами работы терминала (все, что мы предоставляем сегодня как должное, такие как история, опции для предоставления функции автозаполнения и входные события, такие как keypress
, есть).
Модуль readline
( документация ).Хорошей новостью является то, что все стандартное поведение уже сделано для нас, поэтому нет необходимости подключать обработчики событий (например, историю, очистка экрана на Ctrl + L , человек, если выпри условии, что функция автозаполнения будет на Tab нажмите).
Просто в качестве примера
var readline = require('readline')
, cli = readline.createInterface({
input : process.stdin,
output : process.stdout
});
var myPrompt = ' > myPropmt '
cli.setPrompt(myPrompt, myPrompt.length);
// prompt length so you can use "color" in your prompt
cli.prompt();
// Display ' > myPrompt ' with all standard features (history also!)
cli.on('line', function(cmd){ // fired each time the input has a new line
cli.prompt();
})
cli.input.on('keypress', function(key){ // self explanatory
// arguments is a "key" object
// with really nice properties such as ctrl : false
process.stdout.write(JSON.stringify(arguments))
});
Действительно хорошее открытие.
Используемая версия узла - v0.10.29
.Я смотрю на changelog , и он существует с 2010 года (commit 10d8ad ).