皆さんこんにちは!現在SREチームでエンジニアインターンをしており、4月から新卒入社する玉城です。
今回はZshプラグインマネージャーのZplugin導入のススメです!
Zpluginの紹介
Zpluginは柔軟で高速なZshellプラグインマネージャーで、zshの起動を50~73%高速化するTurboモードを備えた唯一のプラグインマネージャーです。
- zplug使っているけど起動時間1秒以上かかるし辛い…
- Zplugin使ってみたいけどドキュメントは英語だし日本語の情報も少ないし…
- Zshを使ってみたいからこの記事を読んでみよう!
という方には、とてもおすすめです!
私も実際にZshとZpluginを使っていて、以前使っていたプラグインマネージャーzplugよりも約0.5秒ほど起動速度が早くなりました。これなしの生活は今や考えられません!(あやしいサプリをすすめているわけではないですよ)
また、ZEALSのエンジニアが使っているシェルはみんな多種多様です 。
良ければ御覧ください!
Zpluginインストール方法
まず、Zpluginをインストールします。
sh -c "$(curl -fsSL https://raw.githubusercontent.com/zdharma/zplugin/master/doc/install.sh)"
インストール後、.zshrc
の末尾に以下の5行が追加されているか確認します。
### Added by Zplugin's installer source '/Users/ssab/.zplugin/bin/zplugin.zsh' autoload -Uz _zplugin (( ${+_comps} )) && _comps[zplugin]=_zplugin ### End of Zplugin's installer chunk
そして、.zshrc
をリロードして、zpluginのコンパイルと更新を行います。
source ~/.zshrc
zplugin self-update
これで、Zpluginを使う準備が整いました。
Zpluginを用いた.zshrcの設定例
Zplugin を導入した私の.zshrc
の設定を公開します!
### Added by Zplugin's installer source '/Users/mbp013/.zplugin/bin/zplugin.zsh' autoload -Uz _zplugin (( ${+_comps} )) && _comps[zplugin]=_zplugin ### End of Zplugin's installer chunk # Two regular plugins loaded without tracking. zplugin light zsh-users/zsh-autosuggestions zplugin light zdharma/fast-syntax-highlighting # Load Git plugin from OMZ zplugin snippet OMZ::plugins/git/git.plugin.zsh zplugin cdclear -q # Plugin history-search-multi-word loaded with tracking. ice wait'!0' zplugin load zdharma/history-search-multi-word # Load the pure theme, with zsh-async library that's bundled with it. zplugin ice pick"async.zsh" src"pure.zsh" zplugin light sindresorhus/pure zplugin ice wait"!0" atinit"zpcompinit; zpcdreplay -q"
上記を.zshrcに書き込み、時間を計測してみましょう。
いったい何秒になるのか...ドキドキ...
time ( zsh -i -c exit ) ( zsh -i -c exit; ) 0.28s user 0.11s system 113% cpu 0.350 total
なんと!!0.35秒になりました!!!爆速!!!
はやくなった要因解説
zplugin独自のターボ機能を用いてプラグインと補完機能のcompdefとcompinitを遅延ロードさせたことで、この速さになっています。Zpluginしゅごい(でも他の要因もありそう)。
zplugの起動時間も計測してみる
zpluginが早いことは分かりましたが、zplugの起動時間もきちんと測ってみないと説得力がありません。
そこで、同じプラグインを読み込んだ状態で起動を行ったら何秒になるのかを検証してみます。
export ZPLUG_HOME=/usr/local/opt/zplug source $ZPLUG_HOME/init.zsh autoload -Uz compinit; compinit zplug "zsh-users/zsh-autosuggestions" zplug "zsh-users/zsh-autosuggestions" zplug "zdharma/fast-syntax-highlighting" zplug "plugins/git", from:oh-my-zsh zplug "zdharma/history-search-multi-word" zplug "sindresorhus/pure" if ! zplug check --verbose; then printf "Install? [y/N]: " if read -q; then echo; zplug install fi fi zplug load --verbose
起動時間を計測してみます。
time ( zsh -i -c exit ) ( zsh -i -c exit; ) 0.56s user 0.35s system 104% cpu 0.875 total
約0.87秒でした。
zpluginのときと比較しておよそ0.5秒ほどの違いがありますね...
まとめ
ほかにもZpluginには便利な機能が多く存在します。
Zpluginを使いこなしてzshの起動時間を爆速にし、周りのエンジニアにコーナーで差をつけましょう!