Macではshellにfishを使っているのですが、fishをさらに便利にするためにoh-my-fishを使っていました。ansibleでもoh-my-fishを入れるようにしていたのですが、ansibleの記事を公開後に、ひむひむ氏からfishermanイイよーというアドバイスをもらいました。
話逸れるけどfishermanおすすめ。omfのpluginも使える。
— えいる (@eielh) 2017年9月17日
README 日本語訳されてるので参照ください。 https://t.co/y1ycKFdSlm
— えいる (@eielh) 2017年9月18日
そういう面もあるけど、そこは個人的にはおまけかなー。oh-my-fishがもってる利点は全部もってて改善されてるって感じ。
— えいる (@eielh) 2017年9月18日
fisherコマンドに限っていえば、 autoload functionがつかわれて fisherコマンドを実行したときに読み込まれるわけですよ。同様に、関数が定義されてるだけのプラグインなら… https://t.co/IofzO0fJrX
— えいる (@eielh) 2017年9月18日
そうかー、色々作業してるときに、これfunctionsじゃなくてconf.dに置いても同じじゃねー?って思ってたけれど、役割全然違うね。勉強になった。
— 尾古 豊明(パトラッシュ) (@patorash) 2017年9月18日
fishermanとは?
fishermanは、fishのプラグイン管理ツールです。
oh-my-fishとの比較
shellの起動が速い
oh-my-fishはプラグイン管理もできますが、本家にもfishshell frameworkと書いてある通りで、専用のomfコマンドや設定などを起動時にロードするため、起動がややモッサリします。
それに比べ、fishermanは~/.config/fish/functions/fisherman.fishに本体を持ちます。functions以下はautoload functionが使われるので、
- shell起動時にはfisherコマンドは定義されない
- fisherコマンドを打つ
- コマンドが見つからないのでfunctions以下の関数をチェックしにいく
- ここで初めて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