0

通过Esc[39m在终端中使用 ANSI 序列,可以在不更改其他属性(如粗体、下划线或背景色)的情况下清除前景色。例如:

echo -e "\e[31;1mRed and bold.\e[39m Bold only."

我想从 terminfo 功能中检索这个序列,但我找不到它;尝试使用时setaf 9,它通过给出序列切换到明亮的颜色Esc[91m

$ tput setaf 1 | xxd
00000000: 1b5b 3331 6d                             .[31m
$ tput setaf 9 | xxd
00000000: 1b5b 3931 6d                             .[91m

我发现重置前景色的唯一功能是sgr0,但它也会重置所有其他属性。

是否可以从 terminfo 访问这些功能?

  • 默认前景Esc[39m
  • 默认背景Esc[49m
4

1 回答 1

0

你必须自己定义它。 X/Open没有定义它,也没有确定的用途。假设您使用的是 ncurses (它是可扩展的),可以通过修改终端描述并为其命名,例如,

infocmp -x > myinfo.src
printf '\tresetf=\\E[39m,\n' >> myinfo.src
tic -x myinfo.src

(通常会在 中创建您的副本$HOME/.terminfo/)。

于 2021-08-24T22:14:40.323 回答