5

我用 C 语言编写了一个简单的控制台程序,它使用 ANSI 转义码为其文本着色。

有没有办法将整个终端的背景临时设置为黑色,默认字体颜色为浅灰色?程序结束后可以恢复吗?

我宁愿避免使用 ncurses。

4

2 回答 2

7

可能最简单的方法是使用 ANSI 设置文本的背景颜色:

例如使用:

echo -e "\e[37m\e[41m"

会给你一个红色背景上的蓝色文本(你可以用它来测试戏剧性的效果,容易看到的颜色)。

然而

echo -e "\e[97m\e[40m"

将在您的程序期间将前景设置为白色,将背景设置为黑色。

如果您发现背景颜色和终端之间出现了一种难看的过渡区域,只需打印足够数量的换行符即可擦除整个屏幕。

要在 C 中使用它,您显然需要printf代替echo.

关于ANSI 转义码的 wiki 页面有更多信息。

于 2012-12-08T10:24:37.430 回答
3

如何执行此操作取决于用户使用的终端。它可能是 ANSI,可能是 VT100,可能是行式打印机。 ncurses为您抽象出这种恐惧。它使用一个关于如何与不同类型的终端对话的信息数据库(查看 $TERM 的内容以了解您当前使用的是哪一个)通常存储在/lib/terminfoor中/usr/share/terminfo

查看这些文件后,您可能需要重新考虑不使用ncurses,除非您有避免使用它的特定要求(嵌入式系统没有足够的存储空间等)

于 2012-12-08T11:15:45.590 回答