シェルプロンプトで、プロンプトの下に内容を表示しますか?

シェルプロンプトで、プロンプトの下に内容を表示しますか?

私のプロンプトが次のようになるとしましょう(_は私のカーソルを表します)。

~ % _

このように見せる方法はないでしょうか。

~ % _
[some status]

この質問は元のzshに関するものでしたが、今は別の答えがあります。

ベストアンサー1

次の設定が機能しているようです。コマンドラインが最初の行を超えると、2行目のテキストが消えます。このpreexec機能は、コマンドを実行する前に2行目を消去します。これを維持するには、に変更しますpreexec () { echo; }

terminfo_down_sc=$terminfo[cud1]$terminfo[cuu1]$terminfo[sc]$terminfo[cud1]
PS1_2='[some status]'
PS1="%{$terminfo_down_sc$PS1_2$terminfo[rc]%}%~ %# "
preexec () { print -rn -- $terminfo[el]; }

%エスケープはzshマニュアル(man zshmisc)に文書化されています。

Terminfo は端末アクセス API です。 Zshには、terminfo端末記述データベースにアクセスするモジュールがあります。$terminfo[$cap]端末の機能を実行するために送信される文字シーケンス$cap(例:コマンドの実行)。$cap詳細については、man 5 terminfo(Linuxのセクション番号は他のuniceと異なる場合があります)を参照してください。

作業順序は次のとおりです。カーソルを1行下に移動し、cud1cuu1)カーソル位置をsc保存します()。カーソルを1行下に移動します[some status]。開始上位ビットと下位ビットは、プロンプトが画面の一番下の行にある場合にのみ必要です。 preexec行は、elコマンドの出力と混同しないように2行目()を削除します。

テキストの2行目が端末よりも広い場合、ディスプレイが壊れる可能性があります。必要にCtrl応じて+を使用して編集してください。L

おすすめ記事