これはターミネーターで奇妙で非常に具体的な問題です。ターミナルウィンドウに文字「§」と入力し、バックスペースをダブルクリックすると、常に両方の文字を削除できます。でもPS1文字列の一部である場合。
再現段階:
- 端末に「§」と入力してください。
- 2文字を削除します。
- 繰り返す
答え1
端末とアプリケーションロケール間のUTF-8設定が一致しないようです。
セクション記号はASCII文字セットの一部ではないため、UTF-8では2バイトとして表示されます。あなたの端末はこのようにメッセージを送信するかもしれませんが、アプリケーション側はそれが1文字だけを表すべきであることを認識せず、1つだけを印刷します。コマンドラインエディタは入力した文字数を追跡し、セクション記号を2文字と見なすため、その文字と同じスペースを使用できます。端末はそれが1つだけであることを知り、それを1つとしてマークし、バックスペースを実行します。