bash または zsh (この現象が見られるのは、この 2 つのシェルだけです) で長いコマンドを入力すると、入力している文字列の途中にカーソルがワープすることがよくあります。なぜこのようなことが起こるのか、また、これについて何か対処法があるかどうか、説明していただけますか?
この問題が頻繁に発生することに気付きました。シェルの履歴を参照しているとき (矢印キーを使用) に長いエントリに遭遇すると、長い新しいエントリが前のエントリと混ざってしまい、テキストが文字化けしてしまいます。
短い文字列の例があります。これに気づきました。
履歴には以下が含まれます:
mkdir sune1
mkdir sune2
に移動しmkdir sune1
、次に に移動するとmkdir sune2
、コマンド ラインは次のようになるはずですmkdir sune2
(現在移動しているのは であるため)。しかし、代わりに が表示されますmkdir1sune2
。
私は何年もの間、このことに頻繁に気づいていましたが、あまり気にしていませんでした。しかし、そろそろ変化の時が来たと思います。何かアイデアはありますか?
答え1
プロンプト文字列に、非印刷文字が誤ってエスケープされている可能性があります。プロンプトに色の変更などがある場合は、ターミナルのエスケープシーケンスを と で囲んで、bash が画面上でスペースを取らないようにする必要があり\[
ます\]
。そうしないと、実際のコマンドが画面上のどこにあるか誤って計算され、間違った場所に更新されます。TLDPからのこのセクション. zsh では、エスケープ シーケンスを と で囲みます%{
。%}