Julia:控制光标在打印输出中的位置

时间:2014-06-30 14:26:43

标签: io output julia ansi-escape

我在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

1 个答案:

答案 0 :(得分:3)

这些都是ANSI escape sequences的示例,它们是终端模拟器的一个特性,并不是特定于Julia的。第一个字符是\u1b,它指定0x1b处的unicode字符(十进制27,为 ESC 发送的密钥代码,通常写为\e)。序列\e[是“控制序列发起者”或CSI。您可以在wikipedia article中看到不完整的转义序列列表,包括ADFGK和{ {1}},正如您所发现的那样。前导数字修改命令,通常指定重复次数。