如何在ncurses中使用mvwprintw中的ANSI转义码?

有没有办法在mvwprintw中使用ANSI转义码?

mvwprintw(window, 0, 0,"%c[%dmCOLORED_TEXT!\n", 0x1B, 32);//doesn't work

即使:

printf("%c[%dmCOLORED_TEXT\n", 0x1B, 32); //works

这适用于使用wattron / wattroff不方便的情况;例如,当从输出此类转义码的进程的stdout重定向输出时.

最佳答案 没有.实现这项工作的唯一方法是自己解析字符串,将转义码转回相应的curses命令,以便与输出一起发出.

你应该意识到的一点是,这些代码虽然广泛实施,但并不普遍. curses的主要目的之一是将其标准命令转换为一系列特定于终端的控制代码.因此,通过可能与当前终端类型对应或不对应的代码并不真正符合curses模型.更基本的是,代码会以诅咒无法跟踪的方式改变终端状态,因此其窗口结构的内容不再与屏幕上的内容相匹配.

点赞