なぜ一部の(多くの場合長い)コマンドが bash と zsh で文字化けするのでしょうか?

なぜ一部の(多くの場合長い)コマンドが bash と zsh で文字化けするのでしょうか?

bash または zsh (この現象が見られるのは、この 2 つのシェルだけです) で長いコマンドを入力すると、入力している文字列の途中にカーソルがワープすることがよくあります。なぜこのようなことが起こるのか、また、これについて何か対処法があるかどうか、説明していただけますか?

この問題が頻繁に発生することに気付きました。シェルの履歴を参照しているとき (矢印キーを使用) に長いエントリに遭遇すると、長い新しいエントリが前のエントリと混ざってしまい、テキストが文字化けしてしまいます。

短い文字列の例があります。これに気づきました。

履歴には以下が含まれます:

mkdir sune1
mkdir sune2

に移動しmkdir sune1、次に に移動するとmkdir sune2、コマンド ラインは次のようになるはずですmkdir sune2(現在移動しているのは であるため)。しかし、代わりに が表示されますmkdir1sune2

私は何年もの間、このことに頻繁に気づいていましたが、あまり気にしていませんでした。しかし、そろそろ変化の時が来たと思います。何かアイデアはありますか?

答え1

プロンプト文字列に、非印刷文字が誤ってエスケープされている可能性があります。プロンプトに色の変更などがある場合は、ターミナルのエスケープシーケンスを と で囲んで、bash が画面上でスペースを取らないようにする必要があり\[ます\]。そうしないと、実際のコマンドが画面上のどこにあるか誤って計算され、間違った場所に更新されます。TLDPからのこのセクション. zsh では、エスケープ シーケンスを と で囲みます%{%}

関連情報