きっかけ
powerlevel10kをダウンロードし、yes/noに答えていって「よし使えるぞ!」と思ったら、ターミナルを開くたびに以下のようなエラーが出てしまいました。
これを解決するのに記事が見あたらなかったので、ここに載せておきます。
[WARNING]: Console output during zsh initialization detected.
When using Powerlevel10k with instant prompt, console output during zsh
initialization may indicate issues.
You can:
- Recommended: Change ~/.zshrc so that it does not perform console I/O
after the instant prompt preamble. See the link below for details.
* You will not see this error message again.
* Zsh will start quickly and prompt will update smoothly.
- Suppress this warning either by running p10k configure or by manually
defining the following parameter:
typeset -g POWERLEVEL9K_INSTANT_PROMPT=quiet
* You will not see this error message again.
* Zsh will start quickly but prompt will jump down after initialization.
- Disable instant prompt either by running p10k configure or by manually
defining the following parameter:
typeset -g POWERLEVEL9K_INSTANT_PROMPT=off
* You will not see this error message again.
* Zsh will start slowly.
- Do nothing.
* You will see this error message every time you start zsh.
* Zsh will start quickly but prompt will jump down after initialization.
For details, see:
https://github.com/romkatv/powerlevel10k/blob/master/README.md#instant-prompt
-- console output produced during zsh initialization follows --
原因
まず、きちんと警告文を読みます。
すると、この警告文を消すには2択設定の仕方があるみたいですね。
つまるところ、一つ目の推奨設定である
typeset -g POWERLEVEL9K_INSTANT_PROMPT=quiet
これを設定すれば
* You will not see this error message again.
* Zsh will start quickly but prompt will jump down after initialization.
となるらしく、二つ目の
typeset -g POWERLEVEL9K_INSTANT_PROMPT=off
を設定すれば
* You will not see this error message again.
* Zsh will start slowly.
になるみたいです。このPOWERLEVEL9K_INSTANT_PROMPT
設定がどうなってるか確認しましょう。
https://github.com/romkatv/powerlevel10k/issues/457
このissueで見つけたコマンドなのですが、
typeset -pm 'POWERLEVEL9K_*|ZSH_VERSION'
と打つと、powerlevel10kに設定している環境変数の状態を確認できるみたいです。
今回は警告に出てきたPOWERLEVEL9K_INSTANT_PROMPT
の状況を確認してみます。
すると、設定がverbose
になっています。
これが警告文のようにquiet
やoff
になってないのが原因です。
解決策
問題はどうやってこれを設定するかです。
それは、powerlevel10kの設定ファイルの.p10k.zsh
を編集します。
vim ~/.p10k.zsh
すると、
# Instant prompt mode.
#
# - off: Disable instant prompt. Choose this if you've tried instant prompt and found
# it incompatible with your zsh configuration files.
# - quiet: Enable instant prompt and don't print warnings when detecting console output
# during zsh initialization. Choose this if you've read and understood
# https://github.com/romkatv/powerlevel10k/blob/master/README.md#instant-prompt.
# - verbose: Enable instant prompt and print a warning when detecting console output during
# zsh initialization. Choose this if you've never tried instant prompt, haven't
# seen the warning, or if you are unsure what this all means.
typeset -g POWERLEVEL9K_INSTANT_PROMPT=verbose
ありました。これを推奨のquietにします。そして設定をsource
で反映させてターミナルを再起動すると
source ~/.p10k.zsh
無事消えてくれました。
最後に
普通に設定したはずなのになんでデフォでこの警告出るんやろ、、、
てか、ドキュメントもエラーもそうだけど、しっかり文章読むの大事やなぁ。と思いました。