移行理由
自分がターミナルで使用しているシェルの変遷
- 2016 ~ 2020/04 zsh zplug
- 2020/04 ~ 2021/04 fishに移行した
- 2021/04 ~ zshに戻った
zshのカスタマイズが面倒なのと、シェルの起動が遅かったので、カスタマイズが簡単なfishに移行したが、以下の理由でまたzshに戻ってきた
- fishはPOSIX非互換なのでコマンドを調べるのが手間
- bash/zshで作ったスクリプトを書き換える必要がある
zinitは起動が早いと聞いたので、zplugからzinitに移行する
インストール
公式の推奨手順
~/.zinit
($ZDOTDIR
が設定されていれば $ZDOTDIR/.zinit
) にインストールされる。
また、 ~/.zshrc
にzinitの設定が追記されるので、リロードし、Zinitをコンパイルする。
プラグインの設定
完全な例
End of Zinit's installer chunk
までは、インストーラが追記した部分。
プラグインのダウンロード、有効化
zinitには2つのプラグインロード方法がある
zinit load
- トラッキング機能を有効にする。zinit report で一覧表示ができたり、zinit unload でプラグインを無効化できるなどの利点があるが、ロードは遅くなる
zinit light
- トラッキング機能が無効になる。一覧等の機能が使えない代わりに高速
めったにトラッキング機能を使わないため、基本的に zinit light
でロードすることにした
zinit ice
後続の zinit load
, zinit light
の挙動を制御する
- wait
- zshが起動したあとにプラグインを遅延ロードする秒数を指定する
- lucid
- 遅延ロードしたときに、コンソールにロード情報が出力されるのを抑制する
- pick
- sourceするファイルを指定する。pluginが
*.plugin.zsh
ファイルを起点にしていない場合、明示的に指定する
結果
2秒くらいかかっていた起動時間が0.6秒前後くらいになった。
また、zplugだと複数シェルを同時に起動すると競合して状態がおかしくるのか、同じプラグインが複数回ロードされることがまれにあったが、
こういった問題も起こらなくなった。