私のプロンプトが次のようになるとしましょう(_は私のカーソルを表します)。
~ % _
このように見せる方法はないでしょうか。
~ % _
[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行下に移動し、cud1
(cuu1
)カーソル位置をsc
保存します()。カーソルを1行下に移動します[some status]
。開始上位ビットと下位ビットは、プロンプトが画面の一番下の行にある場合にのみ必要です。 preexec行は、el
コマンドの出力と混同しないように2行目()を削除します。
テキストの2行目が端末よりも広い場合、ディスプレイが壊れる可能性があります。必要にCtrl応じて+を使用して編集してください。L