zplug から zplugin に乗り換えた

年末の大掃除と称して dotfiles の整理をし、ついでに zplug から zplugin へと乗り換えた。

zsh の起動時間を縮めるために oh-my-zsh から zplug に乗り換えたのが1年半前だが、最近また起動時間が気になったのがきっかけ。

やったこと

基本的には README に従ってマニュアルインストールした後、.zshrc の zplug 固有の部分を zplugin に書き換えるだけだった。ただ、zplugin の初期化処理は zplug よりも簡素なため、いくつか追記が必要だった。

初期化処理

source ~/.zplugin/bin/zplugin.zsh

他のプラグインシステム同様、初期化用スクリプトsource するだけ。

compinit

autoload -Uz compinit
compinit

zplugin は compinit は自動で呼び出してくれないので、自分で呼び出すようにした。

zplug "zsh-users/zsh-completions"

プラグインのロードは zplug コマンドに置き換わった。

プロンプト設定

# プロンプトに git の情報を出すためのユーティリティの読込み
zplugin snippet OMZ::lib/git.zsh
zplugin snippet OMZ::plugins/git/git.plugin.zsh
zplugin cdclear -q

# プロンプトでのコマンド置換を許可
setopt promptsubst

# $fg などを有効化
autoload -Uz colors && colors

# PROMPT を定義したスクリプトの読込み
zplugin snippet ${HOME}/dotfiles/autopp.zsh-theme

ここが少し面倒だった。まず oh-my-zsh 時代に作ったテーマを使っているので、zplugin snippet で oh-my-zsh の git 関連のユーティリティを読み込む。zplugin では promptsubst オプションも colors も有効化されていないので手動で有効化する。

こうするとこれまで使っていたテーマをそのままロードすることができる。

起動速度はどうなったか

Before

( zsh -i -c 'exit'; )  0.29s user 0.27s system 98% cpu 0.566 total
( zsh -i -c 'exit'; )  0.27s user 0.25s system 100% cpu 0.525 total
( zsh -i -c 'exit'; )  0.28s user 0.27s system 102% cpu 0.541 total
( zsh -i -c 'exit'; )  0.28s user 0.26s system 99% cpu 0.540 total
( zsh -i -c 'exit'; )  0.27s user 0.25s system 100% cpu 0.525 total

After:

( zsh -i -c 'exit'; )  0.15s user 0.09s system 96% cpu 0.252 total
( zsh -i -c 'exit'; )  0.14s user 0.09s system 97% cpu 0.238 total
( zsh -i -c 'exit'; )  0.14s user 0.08s system 97% cpu 0.223 total
( zsh -i -c 'exit'; )  0.14s user 0.09s system 95% cpu 0.238 total
( zsh -i -c 'exit'; )  0.14s user 0.08s system 97% cpu 0.226 total

2倍以上速い!!!

これで2020年からはより快適なシェルライフを送ることができそうでなにより。