6

libeditを搭載したアプリケーションのプロンプトを色付けしようとしていますが、色が表示されません。ここで私が間違っていることはありますか?

#include <iostream>
#include <histedit.h>

char* prompt(EditLine *e)
{
  static char p[] = "\1\033[36m\1:::\1\033[0m\1 ";
  return p;
}

int main(int argc, char* argv[])
{
  EditLine* el = el_init(argv[0], stdin, stdout, stderr);
  el_set(el, EL_PROMPT_ESC, &prompt, '\1');
  el_set(el, EL_EDITOR, "vi");

  while (1)
  {
    int count;
    char const* line = el_gets(el, &count);

    if (count > 0)
      std::cout << line;
  }

  el_end(el);

  return 0;
}

でコンパイル

clang++ editline.cc -ledit && ./a.out

残念ながら、次の無色のプロンプトのみが表示されます。

:::     
4

3 に答える 3

1

「esc[0m」はすべての属性をリセットするため、表示された色はすぐに消えます。属性を別の色に設定することをお勧めします。たとえば、白の「esc[47m」

属性のより包括的なリストについては、http://www.termsys.demon.co.uk/vtansi.htmを参照してください。

于 2015-02-21T16:09:52.317 に答える