比較的新しいアーキテクチャのインストールで、ohmyzsh を使用して zsh でタブ補完を使用すると、最初の 2 文字が重複し、削除できなくなります。
たとえば、yay -S terminato
と入力してタブを押すと、ターミネータまで自動補完されますよね? 正常に動作し、通常どおりタブで結果を確認できますが、行の先頭がyay -S term...
ではなく になります。yayay -S term...
エラーを修正するためにバックスペースを押したところ、 より後ろを削除できず、先頭にyay
が残ってしまい、削除できませんでした。ya
これは 1 行のみに適用され、実際には何も影響しません。不適切な 2 つの文字があっても、コマンドは適切に実行されます。
他のエミュレーターも試しましたが、ベース tty でも問題は解決しません。
Enter キーを押すか、Ctrl + C を押して次の行に移動すると、新しい行はリセットされますが、古い行はぶら下がり文字とともに残ります。
明確に言うと、これは yay だけでなく、タブ補完を使用するすべてのコマンドで発生します。
答え1
これは、何らかのエラーが印刷されたが、エラー メッセージによって印刷された文字のせいで、コマンド ラインがエラーの上に、多少間違った場所に再描画されたことを意味します。
最初の文字を削除できない理由ya
は、それが上書きされた古いコマンド ラインの一部だからです。これは実際には新しいコマンド ラインの一部ではないため、編集できません。言い換えると、端末に印刷されて消去されなかった文字があり、シェルはそれについて何も知らないのです。
このエラーの原因を突き止めるには、
set -vx
次に、同じ補完をもう一度試して、出力のどこかにエラー メッセージが表示されるかどうかを確認します。
答え2
私も同じ問題を抱えていました。確かに、それは上で述べたようにロケール設定に関連していました。
ロケールを再生成することで解決しました。
sudo echo en_US.UTF-8 UTF-8 > /etc/locale.gen
sudo locale-gen
再起動後、正常に動作するようになりました。
答え3
私も同じような問題を抱えていましたが、同じように現れました。 の問題を の値まで追跡しました。 (および関連項目) を としてLC_ALL
エクスポートするのをやめてをエクスポートしたところ、問題は解消しました。LC_ALL
C
LANG=en_US.UTF-8
私は問題をZsh、tmux、特定のoh-my-zshテーマ. (robbeyrussell
は oh-my-zsh の最初の作成者だったと思うので、パンくずリストは「公式」GitHub 組織につながるようになりました)
参照: