ターミナルでカーソルの位置を変更する方法
概要
端末でカーソルの位置を変更するには、特殊な文字を出力すればよい。このようにカーソルの位置を制御して出力を繰り返す機能は、進捗や一覧を用紙の無駄なく表示する際に便利だ。
\r
: キャリッジリターンと呼ばれ、カーソルを現在行の先頭に移動させる。\x1b[1A
: 前の行に移動するANSIエスケープコードだ。\x1b[F
: 現在の行から前の行の先頭へ移動するANSIエスケープコードだ。
ここで \x1b
はエスケープ文字で、ANSIエスケープシーケンスの開始を示す役割を果たす。
例
上のGIFは仮のロード画面を表示するジュリアのコードを実行したものだ。基本的な原理は文字列の出力だから、他の言語でも似た方法で実装できる。
println("loading...")
for i in 1:100
print("\r", i, "%")
sleep(0.01)
end
print("\x1b[F", "done!", " " ^ 10)