문제

I find that adding color to the prompt in repl really helps to separate the outputs. I achieved this by using NPM's chalk, but this adds a bunch of space between the prompt and the cursor.

var term = repl.start({
    prompt: chalk.blue('goose> '),
    eval: function(cmd, context, filename, cb){
        ...
    }
});

The prompt comes out like this ('|' is the cursor):

goose>              |

Any ideas on how to fix?

도움이 되었습니까?

해결책

It turns out to be very simple:

var prompt = 'My fancy prompt >>> ';
rl.setPrompt(chalk.blue(prompt), prompt.length);

You need to specify the count of characters because readline doesn't understand that escape sequences are really displayed as zero width.

(This is based on Felix's answer.)

다른 팁

Run this before repl.start():

var readline = require('readline');
var hasAnsi = require('has-ansi');
var stripAnsi = require('strip-ansi');

var _setPrompt = readline.Interface.prototype.setPrompt;
readline.Interface.prototype.setPrompt = function() {
  if (arguments.length === 1 && hasAnsi(arguments[0])) {
    return _setPrompt.call(this, arguments[0], stripAnsi(arguments[0]).length);
  } else {
    return _setPrompt.apply(this, arguments);
  }
};

Dependencies: npm install has-ansi strip-ansi

라이센스 : CC-BY-SA ~와 함께 속성
제휴하지 않습니다 StackOverflow
scroll top