端末プロンプトで現在の行を上書きします

端末プロンプトで現在の行を上書きします

端末プロンプトラインに問題があります。線が長すぎると、同じ線で絡み合い、見やすくUp arrowなります。

確認しました端末プロンプトが正しくラップされません。しかし、印刷できないすべての文字については角かっこを明確に閉じたようです。

これは私のPS1です。

\[\e]0;\u@\h: \w\a\]${debian_chroot:+($debian_chroot) }\[\033[01;36m\]\u@\h\[\033[00m\]\033[01;34m\]\w\033[00m\][$(type __git_ps1 >/dev/null 2>&1 && __git_ps1 "(%s)")]

これを私の標準プロンプトラインと見なしてください。

MELISC@work~/dev/bin_tools[((main))]

私は得ることができる

assdasdasdasdasdadasdsadadasdaddasdadadasdadsadasdsa((main))] asdsadsadsadsadasdasdassdasdasdassdasdassdasdasdasdasdasdasdsadsad

私は私を確認しました.bashrc

列があり、shopt -s checkwinsize自動的に確認する必要があります。

ベストアンサー1

コマンド履歴を表示してコマンドラインを編集できるため、Bourne Againシェルの印刷内容と消去/再作成する内容のアイデアを完全に無効にしました。

プロンプトを次のセクションに分割します。

  1. \[\e]0;\u@\h: \w\a\]— 印刷されない文字(正しい角かっこで囲む)
  2. ${debian_chroot:+($debian_chroot) }- おそらく文字だけを印刷します。
  3. \[\033[01;36m\]— 印刷されない文字(正しい角かっこで囲む)
  4. \u@\h— 文字のみ印刷
  5. \[\033[00m\]— 印刷されない文字(正しい角かっこで囲む)
  6. \033[01;34m\]- 印刷されていない文字、適切に束縛されていないため、Bourne Againシェルはその文字が何であるかを知りません。
  7. \w\033[00m\]— 印刷文字と印刷されない文字の間違った混合
  8. [$(type __git_ps1 >/dev/null 2>&1 && __git_ps1 "(%s)")] - おそらく文字だけを印刷します。

私は以前このようなアドバイスをしたことがあります。しかし、一般的なアドバイスはここにも当てはまります。

  • 自分の精神のために、次のいずれかを使用するか、\e継続的に使用してください。\033
  • 入れ子になっていないペアを厳密に一致させます\[\]
  • 確実にするみんな印刷されないシーケンスは\[and 内にあります。\]逆に、すべての印刷シーケンスはand内にはありません。

(これが私が個人的に珍しい色のプロンプトをしたいときにZシェルと代替プロンプト拡張メカニズムを好む理由です。知るこのようなことは、%F{green}別途説明しなくてもシーケンスを印刷しない。また、terminfo直接接続しなくても正しいエスケープシーケンスを計算できます。 )

おすすめ記事