5

我发现在 repl 中为提示添加颜色确实有助于分离输出。我通过使用 NPM 的粉笔实现了这一点,但这在提示符和光标之间增加了一堆空格。

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

提示如下('|' 是光标):

goose>              |

关于如何解决的任何想法?

4

2 回答 2

5

结果很简单:

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

您需要指定字符数,因为readline不了解转义序列实际上显示为零宽度。

(这是基于菲利克斯的回答。)

于 2015-04-20T09:06:37.853 回答
1

在此之前运行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);
  }
};

依赖项:npm install has-ansi strip-ansi

于 2014-06-29T03:38:54.170 回答