我想使用ANSI转义序列在Ada中打印样式文本。
这是我尝试过的:
with Ada.Text_IO; use Ada.Text_IO;
with Ada.Characters.Latin_1; use Ada.Characters.Latin_1;
procedure Main is
begin
-- No ESC character
Put_Line("\033[93mHowdy!\033[0m");
Put_Line("033[31;1;4mHello\033[0m");
-- With ESC character
Put_Line(ESC & "\033[93m" & "Howdy!" & ESC & "\033[0m");
Put_Line(ESC & "033[93m" & "Howdy!" & ESC & "033[0m");
Put_Line(ESC & "033[31;1;4mHello" & ESC & "\033[0m");
Put_Line(ESC & "Howdy"); -- Prints "owdy", i.e. escapes the H
end;
它们都不起作用!每个语句仅打印纯文本。
答案 0 :(得分:2)
我想通了-我太近了!
事实证明,字符序列\033
是 ASCII转义字符,而不是带内信号的一部分。
这是一个非常简单的修复程序,使用ESC
定义的Ada.Characters.Latin_1
字符:
Put_Line (ESC & "[93m" & "Howdy!" & ESC & "[0m");
以橙色文字打印“ Howdy”。
答案 1 :(得分:0)
我想在Windows 10上执行此操作:它不适用于DOS控制台或Powershell。参见下面的图片。
批处理文件有效并且来自How to echo with different colors in the Windows command line
我认为这与此处说明的问题有关:UTF-8 on Windows with Ada
(bResult - aResult)