高木のブログ

ZshでPreztoを導入してテーマをredhatにしたら、出力結果の改行無し最終行が表示されなくなった

· 150 words · 1 minutes to read
Tags: Zsh Prezto

問題 🔗

タイトル通りで、Zsh使いになってZshフレームワークのPreztoを導入したら出力結果の改行無し最終行が表示されなくなった

自分は文字列を返すAPIをCurlで叩いた時に起きたけど、わかりやすいようにここではechoで例を示す

問題の出力例 🔗

[ytkg@TAKAGInoMacBook-Pro ~]$ echo -n "Hello\nWorld"
Hello
[ytkg@TAKAGInoMacBook-Pro ~]$

理想の出力例 🔗

[ytkg@TAKAGInoMacBook-Pro ~]$ echo -n "Hello\nWorld"
Hello
World[ytkg@TAKAGInoMacBook-Pro ~]$

原因 🔗

プロンプトの設定で、PROMPT_CRがONでPROMPT_SPがOFFになっているからっぽい
その組み合わせだとどうしてダメなのか、そもそもPROMPT_CRとPROMPT_SPは何なのかは割愛する

$ set -o | sed -e 's/^no\(.*\)on$/\1  off/' -e 's/^no\(.*\)off$/\1  on/' |grep -E "prompt(cr|sp)"
promptcr              on
promptsp              off

ちなみにZshのデフォルトは両方ともONらしいけど、redhatの場合、PROMPT_CRのみONにする設定になっていた

解決方法 🔗

~/.zshrcにPROMPT_CRをOFFにする設定を追加する

unsetopt prompt_cr
$ source ~/.zshrc
$ set -o | sed -e 's/^no\(.*\)on$/\1  off/' -e 's/^no\(.*\)off$/\1  on/' |grep -E "prompt(cr|sp)"
promptcr              off
promptsp              off
[ytkg@TAKAGInoMacBook-Pro ~]$ echo -n "Hello\nWorld"
Hello
World[ytkg@TAKAGInoMacBook-Pro ~]$

理想の出力になった

補足 🔗

パイプやリダイレクトでも起きる 🔗

この現象は表示だけではなく、パイプやリダイレクトでも起きることを確認した

$ echo -n "Hello\nWorld" | cat
Hello
$ echo -n "Hello\nWorld" > output.txt
$ cat output.txt
Hello

PROMPT_SPをONにするパターンでは解決せず 🔗

PROMPT_SPをONにする解決方法の記事もいくつか見つかったが、自分の環境ではダメだった

setopt prompt_sp
$ set -o | sed -e 's/^no\(.*\)on$/\1  off/' -e 's/^no\(.*\)off$/\1  on/' |grep -E "prompt(cr|sp)"
promptcr              on
promptsp              on
[ytkg@TAKAGInoMacBook-Pro ~]$ echo -n "Hello\nWorld"
Hello
World%
[ytkg@TAKAGInoMacBook-Pro ~]$

最終行末尾に%が表示されているし、改行もされている

参考 🔗

Categories


Tags