端末のプロンプトラインに問題があります。行が長すぎると、同じ行に折り返され、その後 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
は列を自動チェックする必要があります
コマンド履歴を表示し、コマンドラインを編集できるようにするため、何が印刷され、何を消去/再書き込みする必要があるかについてのBourne AgainShellの考えを完全に禁止しました。
プロンプトをセクションに分割します。
\[\e]0;\u@\h: \w\a\]
_ —非印刷文字、適切に囲まれている${debian_chroot:+($debian_chroot) }
—文字のみを印刷します。おそらく\[\033[01;36m\]
_ —印刷されない文字、適切に囲まれている\u@\h
_ —文字のみを印刷する\[\033[00m\]
_ —印刷されない文字、適切に囲まれている\033[01;34m\]
_ —印刷されない文字、不適切に囲まれているため、Bourne AgainShellはそれらが\w\033[00m\]
_ —印刷文字と非印刷文字の誤った混合[$(type __git_ps1 >/dev/null 2>&1 && __git_ps1 "(%s)")]
—文字のみを印刷します。おそらく私は以前にこのアドバイスをしました 、しかしここにも当てはまるのは一般的なアドバイスです:
\e
_または_\033
_を一貫して使用してください。\[
_および_\]
_を、ネストされていないペアと厳密に一致させる。\[
_と_\]
_内にあることを確認してください(逆に、すべての印刷シーケンスがそうではないことを確認してください)。(これが、私が個人的にZシェルとその代替のプロンプト拡張メカニズムを好む理由です。奇抜な色のプロンプトが必要な場合に使用します。知っている _%F{green}
_のようなものはシーケンスを印刷しないので言われる;そしてそれはまたそれらを配線することなくterminfo
から正しいエスケープシーケンスを解決する。)
JdeBPの答えは素晴らしいですが、私のPS1はすでに適切だったので、私のために働いたものを追加したいと思いました。私はもともと、GitHubのWSLリポジトリの関連する問題( #271 )にこれを投稿しました:
この問題が私を苛立たせているので、後世のためにここにないものを追加したいと思います。少なくとも私にとっては、ようやく原因を見つけたと思うので、これが他の人の助けになることを願っています。この問題は、さまざまなディストリビューションを備えたさまざまなシステム(ビルド18362-18975)で見られました。 .bashrcのPS1の構文が100%正しく、印刷されないすべての文字が適切にエスケープされていることを確認しました。
私にとっての問題は、コンソールのプロパティにありました。 MicrosoftストアからWSLディストリビューション(Ubuntu、Debian、Kali)をインストールし、スタートメニューからアプリを実行しました。これにより、LinuxブランドのクラシックなWindowsコマンドプロンプトコンソールでWSLが起動します。 (ところで、Shift +右クリック/「Linuxシェルをここに開く」でフォルダーから起動すると、同じコンソールウィンドウが開きます)。
いずれにせよ、ポイントは、表示されるコンソールのタイトルバーを右クリックし、[プロパティ]をクリックして、[サイズ変更時にテキスト出力を折り返す]オプションを選択することです。これが問題の解決策です。
これで、次の行に折り返すコマンドを適切に入力し、カーソルを適切に移動できます。これは間違いなくどこかのバグですが、どこに問題があるのかわかりません。