LoginSignup
0
0

PROMPTに2byte文字が入る際のエスケープ

Last updated at Posted at 2023-01-31
  • 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の設定のCja_JP.UTF-8では違いがありませんでした…

最後に

シェルの環境設定(rc,profile)を弄って作業の快適度を上げることはかなり重要です!
問題解決ではStackOverflowを活用することも多いですが、シェル設定ならQiitaに大量の先達の記事があります。
ということで、自分の環境を弄る際に参考にしたQiita記事などを貼っておきます。

0
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
0
0