我在Julia软件包(ProgressMeter)中找到了一些很酷的东西,它允许用户使用光标来打印消息的控制器,即
print(io, "\u1b[1G") # go to first column
print_with_color(color, io, s)
print(io, "\u1b[K") # clear the rest of the line
这些"\u1b[1G"
件被称为什么,我在文档中查找它们时遇到了麻烦。还有什么其他的可能吗?我可以将光标向上移动1行吗?
编辑:
我做了一些实验:
### Without any unicode characters
julia> println("Hello First row"); print("hello "); print("Second row")
Hello First row
hello Second row
### \u1b[1A ###
julia> println("Hello First row"); print("hello \u1b[1A"); print("Second row")
Hello Second row
### \u1b[1S
julia> println("Hello First row"); print("hello \u1b[1S"); print("Second row")
Hello First row
hello
Second row
### \u1b[1D
julia> println("Hello First row"); print("hello \u1b[1D"); print("Second row")
Hello First row
helloSecond row
### \u1b[1F
julia> println("Hello First row"); print("hello \u1b[1F"); print("Second row")
Second rowt row
### \u1b[1G
julia> println("Hello First row"); print("hello \u1b[1G"); print("Second row")
Hello First row
Second row
当我使用\u1b[1H
时,它将光标移到控制台的顶部,u1b[1J
将它带到控制台顶部并清除其余的控制台。
### \u1b[1K
julia> println("Hello First row"); print("hello \u1b[1K"); print("Second row")
Hello First row
Second row
答案 0 :(得分:3)
这些都是ANSI escape sequences的示例,它们是终端模拟器的一个特性,并不是特定于Julia的。第一个字符是\u1b
,它指定0x1b处的unicode字符(十进制27,为 ESC 发送的密钥代码,通常写为\e
)。序列\e[
是“控制序列发起者”或CSI。您可以在wikipedia article中看到不完整的转义序列列表,包括A
,D
,F
,G
,K
和{ {1}},正如您所发现的那样。前导数字修改命令,通常指定重复次数。