はじめに
最近やけにzsh
の動きが遅く、コマンドを入力せずに改行するだけしたら6秒もかかっていたので、改善しました。
この記事が役に立つ方
- zshのモッサリ感ハンパないと感じている方
この記事のメリット
- zshが高速化する(同じコードがあれば)
環境
- macOS Catalina 10.15.1
- zsh: 5.7.1
【前提】:ベースにしたファイル
いつから重くなったかを考えてみると、心当たりがありました。
補完機能を強化しようとこちらの記事にあるコードをコピペし、そこに自分の設定を書き加えるよう変更したのですが、明らかにそれからモッサリ感が。
補完が効き過ぎ感のある zsh の設定を公開してみる。 - Qiita
※こちらの記事のコード自体が悪いわけではなく、自分の環境・設定に合わなかったのだと考えています。
【結論】:vcs_infoの設定の一部が犯人
コメントアウトした箇所が原因でした。
ここをコメントアウトすると、コマンド入力なしの改行で比較すると6秒→**連打してもストレスなし(多分0.3秒以下)**に改善!
~.zshrc
## vcs_info の設定
autoload -Uz vcs_info
zstyle ':vcs_info:*' enable git svn hg
zstyle ':vcs_info:*' formats '(%s)[%b] '
zstyle ':vcs_info:*' actionformats '(%s)[%b|%a] '
zstyle ':vcs_info:svn:*' branchformat '%b:r%r'
# precmd () {
# psvar=()
# LANG=en_US.UTF-8 vcs_info
# [[ -n "$vcs_info_msg_0_" ]] && psvar[1]="$vcs_info_msg_0_"
#
# [[ -t 1 ]] || return
# [ $EMACS ] && return
# case $TERM in
# *xterm*|rxvt|(dt|k|E)term)
# print -Pn "\e]2;localhost\a"
# ;;
# esac
# }
if is-at-least 4.3.10; then
zstyle ':vcs_info:git:*' check-for-changes true
zstyle ':vcs_info:git:*' stagedstr "+"
zstyle ':vcs_info:git:*' unstagedstr "-"
zstyle ':vcs_info:git:*' formats '(%s)[%b]%c%u'
zstyle ':vcs_info:git:*' actionformats '(%s)[%b|%a]%c%u'
fi
# function _update_vcs_info_msg() {
# psvar=()
# LANG=en_US.UTF-8 vcs_info
# [[ -n "$vcs_info_msg_0_" ]] && psvar[1]="$vcs_info_msg_0_"
# }
# add-zsh-hook precmd _update_vcs_info_msg
zstyle ':vcs_info:bzr:*' use-simple true
function toon {
echo -n " "
}
しかも、vcs_info
の機能はpowerlevel10k
で搭載していたので最終的にはこの設定全体を削除することで対応完了しました。
おわりに
最後まで読んで頂きありがとうございました
今回は考えもせずとりあえずコピペしてしまったので反省です。
zshが遅いとストレス半端ないので、無駄に機能は追加しすぎないと肝に銘じます
時間の都合上、今回はなぜ6秒も遅くなったのかを調べるまでは出来ていませんが、また次モッサリしたら調べようと思います