patorashのブログ

方向性はまだない

oh-my-fishからfishermanに乗り換えた

Macではshellにfishを使っているのですが、fishをさらに便利にするためにoh-my-fishを使っていました。ansibleでもoh-my-fishを入れるようにしていたのですが、ansibleの記事を公開後に、ひむひむ氏からfishermanイイよーというアドバイスをもらいました。

fishermanとは?

fishermanは、fishのプラグイン管理ツールです。

github.com

oh-my-fishとの比較

shellの起動が速い

oh-my-fishはプラグイン管理もできますが、本家にもfishshell frameworkと書いてある通りで、専用のomfコマンドや設定などを起動時にロードするため、起動がややモッサリします。

それに比べ、fishermanは~/.config/fish/functions/fisherman.fishに本体を持ちます。functions以下はautoload functionが使われるので、

  1. shell起動時にはfisherコマンドは定義されない
  2. fisherコマンドを打つ
  3. コマンドが見つからないのでfunctions以下の関数をチェックしにいく
  4. ここで初めてfisher関数がロードされて実行される

という手順になるので、shellの起動が高速です。

oh-my-fishのプラグインが利用できる

fishermanはoh-my-fishのプラグインの管理もできます。これはつまり…「あれ…oh-my-fish必要ないんじゃ…?」という気持ちになります。実際、必要なさそうです。

fishermanを使ってみる

インストール

githubのREADMEに従ってやってみましょう。

curl -Lo ~/.config/fish/functions/fisher.fish --create-dirs https://git.io/fisher

インストールはこれで終わりです。

プラグインのインストール

fishermanを使ってプラグインのインストールをするのは簡単です。fishermanのコマンドは、fisherになります。manはどこいった!

fisher [プラグイン名]

と入力するだけです。プラグイン以外にも、gistやローカルの野良プラグインなども、fisherコマンドでインストール可能です。

利用可能なプラグインの検索
fisher ls-remote
インストール済みのプラグインの一覧
fisher ls
プラグインの削除
fisher rm [プラグイン名]
プラグインの全削除

fisher lsの結果をfisher rmにパイプで渡すだけです。

fisher ls | fisher rm

fishermanのアンインストール方法

fisherman自身の削除もシンプルです。

fisher self-uninstall

fishermanでoh-my-fishのthemeをインストールする

fishermanをインストールしただけだと、素のfishなので、見た目が寂しいです。そこで、oh-my-fishのdefualtのテーマをインストールしてみました。ググったら、普通に入れただけではダメという情報を見つけました。git_utilプラグインを入れておかなければならないそうです。

fisher git_util
fisher omf/theme-default

これで、見た目もoh-my-fishを使ってた頃と同じになりました。

気付き

MacでAnsibleを使う記事を投稿したことで、いいアドバイスをもらうことができました。アウトプットしたからこそアドバイスがもらえたわけで、何も書かなかったらfishermanのことをよく知らないままだったので、書いてよかったなと思います。ひむひむ氏のおかげで、さらに快適なfish shell生活が送れそうです。

oh-my-fishの削除

そうそう、oh-my-fishも忘れないように削除しておきましょう。

omf destroy

参考URL

oh-my-fish は古い!fisherman で置き換えられる。 | Futurismo