
私は熱心なユーザーです魚の殻そして私はそれがとても好きです。
しかし、1つの疑問があります。
ページ上参考:というタイトルの段落があります「コマンドラインエディタ」便利なショートカットがたくさん載っています。
私にとって最も興味深いのはCtrl+L キー説明によると、「Ctrl-L は画面をクリアして再描画します」。試してみたところ、期待どおりに動作しました。ただし、前のプロンプトに追加されるいくつかの記号が生成されます。これは、後方にスクロールすると確認できます。
例:
rosika@... ~/Schreibtisch> [3;J
rosika@... ~/Schreibtisch>
これが[3;J
私が尋ねているものです。これは[
確かに、(おそらく)4 桁の数字が入った長方形のようなものです。
なぜこのような現象が起こるのか、誰か教えてもらえませんか?これはどういうことでしょうか?そして、このようになるのでしょうか?
よろしくお願いします。
ご挨拶
ロシカ
私のシステム:
Linux/Lubuntu 16.04.4 LTS、64 ビット
魚v.2.2.0-3
答え1
UNIX 端末は、制御シーケンスとテキストを 1 つのストリームに混在させて解釈することでコンテンツで満たされます。多くの文字はテキストと制御コードの両方になる可能性があり、その意味はコンテキストによって異なります。
<esc> は[3;J
そのようなシーケンスの 1 つです。間違ったコンテキストでは印刷され、正しいコンテキストではディスプレイのリセットの一部になります。
詳細については、、、termcap
およびconsole_codes
マニュアルページを参照してください。tput
答え2
端末エミュレータが環境変数の値と一致しませんTERM
。最も一般的なエラーは、XTerm 以外のものが、xterm
またはxterm-new
またはという名前の termcap/terminfo レコードと一致すると考えることですxterm-256color
。
terminfo レコードは、クリアするスクロールバック バッファがあることと、そのクリア方法をプログラムに伝える比較的新しいE3
機能 (現在はlinux
、、、、、、、、および他putty
のいくつかの端末タイプに指定されています) を指定します。しかし、端末エミュレータは実際にはその制御シーケンスをサポートしておらず、代わりにそれに応答して表示される内容を出力します。fish シェルは、この terminfo 拡張機能を使用するコマンドを実行しています。putty-256color
xterm-basic
xterm-new
xterm
xterm-256color
clear
環境変数の値に指定された名前は、TERM
端末エミュレーターの動作を正しく記述する termcap/terminfo レコードの名前と一致する必要があります。