という疑問を持ったので、少し調べてみた。 やってみた ターミナルを分割して、ターミナルの任意の位置にカーソルの移動を行うサンプルアプリを作って見た。 動きとしてはこんな感じ 実装 こんな感じで実装してます。 # frozen_string_literal: true # ターミナル幅、高さの取得 width, height = `tput cols`.to_i, `tput lines`.to_i # 画面を改行で埋めて、カーソルの移動ができるようにする height.times { puts "\n" } sleep 2 # ターミナルの中央位置を取得 center = height / 2 # ターミナルの中央部を"="で埋めて擬似的に画面分割をさせる print "\033[#{center};1H" puts '=' * width # ターミナルの先頭行へ移動 print "\0