- MacOS Ventura (13.1 22C65), 2023
- zsh 5.8.1 (x86_64-apple-darwin22.0)
シェルのプロンプト
.zshrc
を弄っていたら、[TAB]キーでの補完結果の表示がおかしくなりました。
具体的に言うと、
> ls␣
の時に[TAB]を押すと、
> ls␣ls␣
Applications/ Downloads/ ...
Desktop/ Library/ ...
Documents/ Movies/ ...
のようになってしまいます。
ただ、表示がおかしいだけで、実行は正しく行えます。
原因と対処法
色々と弄った結果、prompt_subst
ではなくzshのPROMPT
に要因があると分かりました。
PROMPT内で2byte以上の文字を表示させているのが良くないみたいです。
アルファベットと数字と記号のみを表示するように変更しても良いですが、気に入っている今のPROMPTを変えたくないです(苦労して調節した表示ですし)。
そこで対処法を調べたところ、その文字の周囲を%G
でエスケープすると良いらしいことが分かりました。
具体的には、
.zshrc
PROMPT='aaa→bbb'
の→
をエスケープしたいなら、
.zshrc
PROMPT='aaa%{%G→%}bbb'
のように%{%G
と%}
で囲んでエスケープ。
当環境ではこれでうまくいきました。
色々やった際に久々に使ったlocale
コマンドですが、LANG
の設定のC
とja_JP.UTF-8
では違いがありませんでした…
最後に
シェルの環境設定(rc,profile)を弄って作業の快適度を上げることはかなり重要です!
問題解決ではStackOverflowを活用することも多いですが、シェル設定ならQiitaに大量の先達の記事があります。
ということで、自分の環境を弄る際に参考にしたQiita記事などを貼っておきます。