1

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

1 回答 1

3

这些都是ANSI 转义序列的示例,它们是终端仿真器的一个特性,并不特定于 Julia。第一个字符是\u1b,它指定 0x1b 处的 unicode 字符(十进制 27,为 发送的密钥代码ESC,通常写为\e)。该序列\e[是“控制序列启动器”或 CSI。您可以在维基百科文章中看到不完整的转义序列列表,包括您发现的A, D, F, G,K和。S前导数字修改命令,通常指定重复次数。

于 2014-06-30T15:38:19.757 回答