§でbashプロンプトから2文字を削除できるのはなぜですか?

§でbashプロンプトから2文字を削除できるのはなぜですか?

これはターミネーターで奇妙で非常に具体的な問題です。ターミナルウィンドウに文字「§」と入力し、バックスペースをダブルクリックすると、常に両方の文字を削除できます。でもPS1文字列の一部である場合。

再現段階:

  1. 端末に「§」と入力してください。
  2. 2文字を削除します。
  3. 繰り返す

ベストアンサー1

端末とアプリケーションロケール間のUTF-8設定が一致しないようです。

セクション記号はASCII文字セットの一部ではないため、UTF-8では2バイトとして表示されます。あなたの端末はこのようにメッセージを送信するかもしれませんが、アプリケーション側はそれが1文字だけを表すべきであることを認識せず、1つだけを印刷します。コマンドラインエディタは入力した文字数を追跡し、セクション記号を2文字と見なすため、その文字と同じスペースを使用できます。端末はそれが1つだけであることを知り、それを1つとしてマークし、バックスペースを実行します。

おすすめ記事