ANSI码控制终端字体特效
c/cpp
有时候会需要终端log出来的信息,即文字产生各种各样的特效,如不同的颜色,不同的背景色,闪烁等特效。此时就需要使用ANSI码。
具体的控制码见资料1,对于控制码的总结已经很完善了,而且给了十分便捷的使用方法。
CMake
CMakeLists.txt 在 configure 过程,用户也能使用 message 来log一些信息,此时也可以修改字体特效。
具体如何使用参考资料2
这里贴出来,其实最主要的变化就是如何表示 escape(ESC)
的 ASCII 码
if(NOT WIN32)
string(ASCII 27 Esc)
set(ColourReset "${Esc}[m")
set(ColourBold "${Esc}[1m")
set(Red "${Esc}[31m")
set(Green "${Esc}[32m")
set(Yellow "${Esc}[33m")
set(Blue "${Esc}[34m")
set(Magenta "${Esc}[35m")
set(Cyan "${Esc}[36m")
set(White "${Esc}[37m")
set(BoldRed "${Esc}[1;31m")
set(BoldGreen "${Esc}[1;32m")
set(BoldYellow "${Esc}[1;33m")
set(BoldBlue "${Esc}[1;34m")
set(BoldMagenta "${Esc}[1;35m")
set(BoldCyan "${Esc}[1;36m")
set(BoldWhite "${Esc}[1;37m")
endif()
message("This is normal")
message("${Red}This is Red${ColourReset}")
message("${Green}This is Green${ColourReset}")
message("${Yellow}This is Yellow${ColourReset}")
message("${Blue}This is Blue${ColourReset}")
message("${Magenta}This is Magenta${ColourReset}")
message("${Cyan}This is Cyan${ColourReset}")
message("${White}This is White${ColourReset}")
message("${BoldRed}This is BoldRed${ColourReset}")
message("${BoldGreen}This is BoldGreen${ColourReset}")
message("${BoldYellow}This is BoldYellow${ColourReset}")
message("${BoldBlue}This is BoldBlue${ColourReset}")
message("${BoldMagenta}This is BoldMagenta${ColourReset}")
message("${BoldCyan}This is BoldCyan${ColourReset}")
message("${BoldWhite}This is BoldWhite\n\n${ColourReset}")
问题:vscode终端的字体不会闪烁
当笔者设置了字体闪烁之后,发现在vscode的自带终端上怎么也无法显示,ubuntu自带的终端是可以正常闪烁设置好的文字的。经过一番搜索,发现了资料3
简单来说就是vscode的终端是基于 xterm.js 开发的,总之截止笔者成文的2023/12/25,仍旧不支持。相应的issue都close了….
#