Help us understand the problem. What is going on with this article?

【zsh】zshの動作が毎回6秒もかかっていたので.zshrcから犯人を見つけて高速化した

はじめに

最近やけに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で搭載していたので最終的にはこの設定全体を削除することで対応完了しました。

おわりに

最後まで読んで頂きありがとうございました:bow_tone1:

今回は考えもせずとりあえずコピペしてしまったので反省です。
zshが遅いとストレス半端ないので、無駄に機能は追加しすぎないと肝に銘じます:sweat_smile:

時間の都合上、今回はなぜ6秒も遅くなったのかを調べるまでは出来ていませんが、また次モッサリしたら調べようと思います:thinking:

参考にさせて頂いたサイト(いつもありがとうございます)

Why not register and get more from Qiita?
  1. We will deliver articles that match you
    By following users and tags, you can catch up information on technical fields that you are interested in as a whole
  2. you can read useful information later efficiently
    By "stocking" the articles you like, you can search right away
Comments
Sign up for free and join this conversation.
If you already have a Qiita account
Why do not you register as a user and use Qiita more conveniently?
You need to log in to use this function. Qiita can be used more conveniently after logging in.
You seem to be reading articles frequently this month. Qiita can be used more conveniently after logging in.
  1. We will deliver articles that match you
    By following users and tags, you can catch up information on technical fields that you are interested in as a whole
  2. you can read useful information later efficiently
    By "stocking" the articles you like, you can search right away