カーソル
カーソルは、次に文字が印字される、または位置に依存する制御シーケンスが実行される行と列です。
カーソルは常にターミナル内に存在し、アクティブな画面領域内の特定の行と列に位置します。カーソルは視覚的に非表示にできますが、ターミナルの内部状態には常にカーソルがあり、常に何らかのアクティブな位置にあります。
カーソルは最も一般的には、次に印字される文字が置かれる位置と関連付けられます。しかし、カーソルは位置に依存する制御シーケンスにも使われます。たとえば、行消去の制御シーケンス を実行すると、カーソルが最初に消去する行を決定します。
ターミナルは 画面ごと に単一のカーソルを持ちます。 このドキュメントは ターミナル API に関連するカーソルについて述べています。 エディターなどのアプリケーションは、ターミナルのカーソルとはまったく無関係な独自の「カーソル」概念を持つ場合があります。たとえば、エディターが「複数カーソル」をサポートしていても、基盤となるターミナル API は別個の概念であり、任意の時点で単一のカーソルしかサポートしません。
カーソルは常に最初は画面の左上隅に位置します。
保留中の折り返し状態は、画面の最右列に文字が印字されたときに設定される真偽値で、次に印字される文字が次の行へ折り返すべきことを示します。
保留中の折り返し状態が設定されている場合、次に印字される文字はカーソルを次の行の最左列へ移動し、保留中の折り返し状態を解除してから、その文字を印字します1。
保留中の折り返し状態は明白で取るに足らない機能のように感じられますが、カーソルの動作に重大(だが微妙)な影響を与えます。たとえば、印字の後に バックスペース を送ると、画面の最右列で印字しているかどうかで動作が変わります。
最右列以外の任意の列で文字を印字してから バックスペース 制御文字を送ると、カーソルは直前に印字した文字の上へ戻ります。しかし最右列で文字を印字してから バックスペース 制御文字を送ると、カーソルは直前に印字した文字の左へ移動します。これが 多くの一般的なシェルプロンプトにおけるバグ の原因です。
多くの制御シーケンスが「保留中の折り返し状態を解除する」と記されているのが分かります。これはそのままの意味です:カーソルに保留中の折り返し状態が設定されていれば、それが解除されます。次に印字される文字は次の行へ折り返しません。
-
This isn't strictly true. Wraparound modes and scroll regions この動作を変更できます。 ↩