5
3

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 5 years have passed since last update.

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

Posted at

はじめに

最近やけに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:

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

5
3
1

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
5
3

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?