zshのプラグインマネージャー【Sheldon】のインストール

zshプラグインマネージャーSheldonのインストールとplugins.tomlの書き方を解説する記事のアイキャッチ
目次

zshのプラグインマネージャーはどれがいい?

私は今まで仕事での環境でしかzshを使っていなかったのですが、最近自宅の環境でも使用するようしています。それでzshをそのまま使用しようとすると限界があるのでプラグインを入れようと思ったときに、プラグインマネージャーはどれがいいんだ??ってなりました。とりあえず動作が早いものを入れたいと思います。

そこで、色々調べた結果、Zinitが早いぞ!!ってのをよく見るのですが、2021年に元の開発者のリポジトリが消えてしまい、今はコミュニティ(zdharma-continuum)が引き継いで開発を続けていると知って、「どれを選べばいいんだろう?」と迷いました。
とりあえずなんか早いのを探しているとSheldonというプラグインマネージャーがあったので入れてみようかと思います。

https://github.com/rossmacarthur/sheldon

Sheldonのインストール

私の環境はLinuxなので、GitHubのページに書いてある下記のコマンドでビルド済みのバイナリをダウンロードします。
最初はこの方法で入れたのですが、プラグインのインストールでエラーが出ました。あとで調べると、原因はインストール方法ではなく、ネットワーク(DNSの名前解決)の問題でした。どちらの方法でも入れられますが、ArchLinuxなら今回はpacmanで入れています。

# ビルド済みのバイナリを入れる方法
curl --proto '=https' -fLsS https://rossmacarthur.github.io/install/crate.sh | bash -s -- --repo rossmacarthur/sheldon --to ~/.local/bin

# ArchLinuxならpacmanでも入れられる
sudo pacman -S sheldon

ちなみにそのとき出たエラーは下記です。github.comの名前解決に失敗していて、ネットワークの問題でした。

# zshrcを読み込んで、プラグインをインストールしようと思ったらエラーになった
localhost% source .zshrc               
Loaded ~/.config/sheldon/plugins.toml

error: failed to install source `https://github.com/zsh-users/zsh-autosuggestions`
  due to: failed to git clone `https://github.com/zsh-users/zsh-autosuggestions`
  due to: failed to resolve address for github.com: Try again; class=Net (12)

Sheldonの初期化

次に下記のコマンドでPluginを書くToml構成ファイルを初期化します。
もしコマンドでエラーが出たときはおそらくパスが通っていないので、「~/.local/bin」のパスを通してください。

sheldon init --shell zsh

コマンドを実行すると新しくコンフィグファイルを作っていいか?と聞かれるのでyを入力してEnterを押します。
そうすると~/.config/sheldon/plugins.tomlが作成されます。

Sheldonの読み込みの流れ:.zshrc → eval で sheldon source を実行 → plugins.toml を読み込み → プラグインをダウンロード(lock)→ zshに読み込み

Sheldonを使ってみる


とりあえずプロンプト画面をいい感じにしてくれるプラグインであるPowerlevel10kをインストールします。
https://github.com/romkatv/powerlevel10k
plugins.tomlをnvimで開き、次のように記載し保存します。

[plugins.powerlevel10k]
github = "romkatv/powerlevel10k"

そのままだとSheldonをロードするのが面倒なので、zshrcに下記の内容を書き込み、zshrcが読み込まれたときにSheldonが読み込まれるようにします。

eval "$(sheldon source)"

これを書いておくことで、【source ~/.zshrc】とするだけでプラグインをインストールすることができるようになります。

plugins.tomlの書き方

ここからは設定ファイル(plugins.toml)の書き方をもう少し詳しくまとめます。内容はSheldonの公式ドキュメント(https://sheldon.cli.rs/)で確認しています。

基本の形

プラグインは「[plugins.好きな名前]」というテーブルを作って、その中にどこから取ってくるか(ソース)を書きます。名前は自分で分かればなんでも大丈夫です。

# 使っているシェル(省略時はzsh)
shell = "zsh"

[plugins.プラグインの名前]
github = "ユーザー名/リポジトリ名"
plugins.tomlの構造:[plugins.名前]の下にgithubなどのソースとuse・applyなどのオプションが並ぶ

ソースの種類

GitHub以外からも取ってこられます。1つのプラグインに書けるソースは1種類だけです。

キー内容例
githubGitHubのリポジトリgithub = “owner/repo”
gistGistgist = “Gistのハッシュ”
git任意のGitリポジトリのURLgit = “https://github.com/owner/repo”
remote1ファイルをURLからダウンロードremote = “https://…/plugin.zsh”
local手元のディレクトリlocal = “~/プラグインのディレクトリ”
inline設定ファイルに直接書くシェルコードinline = ‘alias ll=”ls -l”‘
plugins.tomlで使えるソース

よく使うオプション

オプション内容
branch / tag / revGitのブランチ・タグ・コミットを指定してチェックアウトする
use読み込むファイルを指定する(例:use = [“*.zsh”])。省略するとmatchのパターンで自動判定
apply適用するテンプレートを指定する(例:apply = [“source”])。zshではsource、PATH、path、fpathが使える
protoクローンに使うプロトコル(git / https / ssh)
プラグインごとのオプション

プラグインの追加例

私が入れているものも含めて、よく使われるプラグインの追加例です。

plugins.tomlに直接書く

shell = "zsh"

# プロンプト
[plugins.powerlevel10k]
github = "romkatv/powerlevel10k"

# コマンドの入力候補を薄く表示
[plugins.zsh-autosuggestions]
github = "zsh-users/zsh-autosuggestions"

# 補完の定義を追加(fpathに追加する)
[plugins.zsh-completions]
github = "zsh-users/zsh-completions"
apply = ["fpath"]

# コマンドに色を付ける
[plugins.zsh-syntax-highlighting]
github = "zsh-users/zsh-syntax-highlighting"

# 自分用のエイリアスをインラインで
[plugins.my-aliases]
inline = 'alias ll="ls -l"'

コマンドで追加する

ファイルを編集する代わりに、sheldon addコマンドでも追加できます。このコマンドは設定ファイルを書き換えるだけなので、インストールは次のsheldon lockか、zshの再読み込みで行われます。

# GitHubのリポジトリを追加
sheldon add zsh-autosuggestions --github zsh-users/zsh-autosuggestions

# タグを指定して追加
sheldon add example --github owner/repo --tag v0.1.0

# 設定ファイルをエディタで開く
sheldon edit

# プラグインを削除
sheldon remove example

インストールと更新

# プラグインをダウンロードしてロックファイルを作る
sheldon lock

# すべてのプラグインを更新
sheldon lock --update

# 入れ直したいとき
sheldon lock --reinstall

他のプラグインマネージャーとの比較

最初に迷ったZinitなども含めて、ざっくり比べるとこんな感じです。どれも人気があるので、好みで選んでいいと思います。

SheldonZinitOh My Zsh
設定の書き方TOMLファイル(plugins.toml).zshrcにzinitコマンドで書く.zshrcのplugins=(…)で指定
特徴Rust製。設定とロックファイルを分けて管理遅延読み込み(Turbo mode)など機能が多いテーマやプラグインが同梱されたフレームワーク
対応シェルzsh / bashzshzsh
zshのプラグインマネージャーの比較

トラブル対処

  • sheldonコマンドが見つからない:インストール先(~/.local/binなど)にパスが通っているか確認します。
  • failed to git clone / failed to resolve address:上で私が出したエラーです。ネットワークやDNSの名前解決ができていない状態なので、ネットワーク設定を確認してから「sheldon lock」をやり直します。
  • 設定を変えたのに反映されない:「source ~/.zshrc」で読み込み直すか、「sheldon lock」を実行します。
  • プラグインがおかしくなった:「sheldon lock –reinstall」で入れ直します。

おわりに

Sheldonは設定がTOMLファイル1つにまとまるので、どのプラグインを入れているか一目で分かるのが気に入っています。少しずつプラグインを増やしていこうと思います。

よかったらシェアしてね!
  • URLをコピーしました!
  • URLをコピーしました!

この記事を書いた人

社内エンジニアとして、SREとセキュリティの仕事をしています。サーバーの構築や運用、クラウド環境の設計にも関わってきました。趣味はゲームと漫画・アニメ。

コメント

コメントする

目次