端末プロンプトラインに問題があります。線が長すぎると、同じ線で絡み合い、見やすく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シェルの印刷内容と消去/再作成する内容のアイデアを完全に無効にしました。
プロンプトを次のセクションに分割します。
\[\e]0;\u@\h: \w\a\]
— 印刷されない文字(正しい角かっこで囲む)${debian_chroot:+($debian_chroot) }
- おそらく文字だけを印刷します。\[\033[01;36m\]
— 印刷されない文字(正しい角かっこで囲む)\u@\h
— 文字のみ印刷\[\033[00m\]
— 印刷されない文字(正しい角かっこで囲む)\033[01;34m\]
- 印刷されていない文字、適切に束縛されていないため、Bourne Againシェルはその文字が何であるかを知りません。\w\033[00m\]
— 印刷文字と印刷されない文字の間違った混合[$(type __git_ps1 >/dev/null 2>&1 && __git_ps1 "(%s)")]
- おそらく文字だけを印刷します。
私は以前このようなアドバイスをしたことがあります。しかし、一般的なアドバイスはここにも当てはまります。
- 自分の精神のために、次のいずれかを使用するか、
\e
継続的に使用してください。\033
- 入れ子になっていないペアを厳密に一致させます
\[
。\]
- 確実にするみんな印刷されないシーケンスは
\[
and 内にあります。\]
逆に、すべての印刷シーケンスはand内にはありません。
(これが私が個人的に珍しい色のプロンプトをしたいときにZシェルと代替プロンプト拡張メカニズムを好む理由です。知るこのようなことは、%F{green}
別途説明しなくてもシーケンスを印刷しない。また、terminfo
直接接続しなくても正しいエスケープシーケンスを計算できます。 )
答え2
JdeBPの答えはとても良いですが、私のPS1はすでに適しているので、私に合った答えを追加する必要があると思いました。私はもともと関連する質問にこれを投稿しました(2713)GitHubのWSLリポジトリ:
この問題が私を狂わせたので、私は子孫のために「ここになし」を追加したかったのです。私はついにその理由を見つけたと思います。少なくとも私としては、これが他の誰かに役立つことを願っています。さまざまなディストリビューションのさまざまなシステム(ビルド18362 - 18975)でこの問題を確認しました。 .bashrcのPS1構文が100%正確で印刷されていないすべての文字が正しくエスケープされていることを確認しました。
私にとって、問題はコンソールのプロパティでした。 Microsoft StoreからWSLディストリビューション(Ubuntu、Debian、Kali)をインストールし、スタートメニューからアプリケーションを実行しました。私が理解したように、LinuxブランドのクラシックWindowsコマンドプロンプトコンソールでWSLが起動します。 (BTW、Shift +右クリック/「ここでLinuxシェルを開く」を使用してフォルダから起動すると、同じコンソールウィンドウが開きます)。
どちらの場合も、生成されたコンソールのタイトルバーを右クリックして[プロパティ]をクリックし、[サイズを調整するときのテキスト出力の折り返し]オプションを選択すると問題が解決します。
これで、次の行に進むコマンドを正しく入力でき、カーソルを適切に移動できます。どこかにバグがあるのは間違いありませんが、どこで問題が発生するのかわかりません。