我用 C 语言编写了一个简单的控制台程序,它使用 ANSI 转义码为其文本着色。
有没有办法将整个终端的背景临时设置为黑色,默认字体颜色为浅灰色?程序结束后可以恢复吗?
我宁愿避免使用 ncurses。
可能最简单的方法是使用 ANSI 设置文本的背景颜色:
例如使用:
echo -e "\e[37m\e[41m"
会给你一个红色背景上的蓝色文本(你可以用它来测试戏剧性的效果,容易看到的颜色)。
然而
echo -e "\e[97m\e[40m"
将在您的程序期间将前景设置为白色,将背景设置为黑色。
如果您发现背景颜色和终端之间出现了一种难看的过渡区域,只需打印足够数量的换行符即可擦除整个屏幕。
要在 C 中使用它,您显然需要printf
代替echo
.
关于ANSI 转义码的 wiki 页面有更多信息。
如何执行此操作取决于用户使用的终端。它可能是 ANSI,可能是 VT100,可能是行式打印机。 ncurses为您抽象出这种恐惧。它使用一个关于如何与不同类型的终端对话的信息数据库(查看 $TERM 的内容以了解您当前使用的是哪一个)通常存储在/lib/terminfo
or中/usr/share/terminfo
。
查看这些文件后,您可能需要重新考虑不使用ncurses,除非您有避免使用它的特定要求(嵌入式系统没有足够的存储空间等)