Javascript 如何在Node.js的readline中输入换行符?

Javascript 如何在Node.js的readline中输入换行符?,javascript,node.js,readline,Javascript,Node.js,Readline,我的解释器使用Readline,我想在enter中插入换行符,而不是进入下一行,所以如果我使用history,我将使用full命令,而不是分隔多行命令中的一行 我的代码如下所示: var prompt = 'lips> '; var continuePrompt = '... '; const rl = readline.createInterface({ input: process.stdin, output: process.stdout, prompt: p

我的解释器使用Readline,我想在enter中插入换行符,而不是进入下一行,所以如果我使用history,我将使用full命令,而不是分隔多行命令中的一行

我的代码如下所示:

var prompt = 'lips> ';
var continuePrompt = '... ';
const rl = readline.createInterface({
    input: process.stdin,
    output: process.stdout,
    prompt: prompt,
    terminal: !!process.stdin.isTTY && !(process.env.EMACS || process.env.INSIDE_EMACS)
});
if (process.stdin.isTTY) {
    rl.prompt();
}
boostrap(interp.env).then(function() {
    rl.on('line', function(line) {
        code += line + '\n';
        if (balanced_parenthesis(code)) {
            rl.pause();
            run(code, interp.env).then(function(result) {
                if (process.stdin.isTTY) {
                    print(result);
                    if (multiline) {
                        rl.setPrompt(prompt);
                    }
                    rl.prompt();
                }
                rl.resume();
            }).catch(function() {
                if (process.stdin.isTTY) {
                    if (multiline) {
                        rl.setPrompt(prompt);
                    }
                    rl.prompt();
                }
            });
            code = '';
        } else {
            multiline = true;
            var ind = indent(code, 2, prompt.length - continuePrompt.length);
            rl.setPrompt(continuePrompt);
            rl.prompt();
            rl.write(new Array(ind + 1).join(' '));
        }
    });
});
所以基本上我需要的是一些continue或preventeddefault(比如在浏览器中)。这样的事情可能吗

其中一个问题是,我有自动缩进,当我复制粘贴代码时,如果代码已经有缩进,我就有双缩进,因为剪贴板中的每一行在Readline中都是单行。我想插入单个文本。或者至少重写历史以在最后一次添加多行命令,或者完全禁用历史并在我自己的代码中向历史添加项目

Node.js中的Readline是否可以这样做,或者我是否需要在没有Readline的情况下重新创建相同的Readline API。你知道有没有使用这种技术的例子,或者是使用这种技术的开源项目

编辑:

我找到了这个问题和答案

但节点似乎不支持此API。有没有办法在节点中具有相同的功能

rl_bind_key('\r', return_func) ===> int return_func(int cnt, int key) { ... }