ちなみに

火曜日の空は僕を押しつぶした。

fishに移行しようとしている話

f:id:Sixeight:20201001015509p:plain

三行

  • zsh から fish に移行した
  • ほとんど設定してないけどいい感じになった (設定)
  • しばらく使ってみて様子をみたい

経緯

10年以上 zsh を使ってきて、以前はこだわりをもって設定を書いていたが、だんだん面倒くさくなってきた。 デフォルトでいい感じにしてほしいという思いがあって数年前に設定を全部捨てて oh-my-zsh を使うようになった。 これはけっこうよくて必要なところだけを設定していくだけでいい感じの環境が作れたのである程度満足はしていたのだけれど不満もある。 まず重い。プロンプトが表示されるまでに時間がかかるのがストレス。 さらにzshのかっこいい設定は人類が読み込むには早すぎて、隠蔽されている部分を触りたくなると途端に面倒になった。

とにかくoh-my-zshからは撤退しようという機運が高まってきて、ここ数日どうしようか考えていたのだけれど、やっぱり設定をがんばるというのはしたくない。 そうこうしているうちにだんだん fish でもいい気がしてきてがっと移行してしまった。

全体的にていねいに作られていておもてなし感を感じるし、補完が優秀だったり、プラグイン周りの扱いがよく出来てる感じがある。 しかし、POSIX互換ではなくて独自路線を走っているので、脱出が大変そうというのが懸念でメインでは使えていなかった。

目的としては設定を出来るだけ書かないことなので、そうなると脱出もまあなんとかなるでしょということで今回は諦めて移行することに。 難しいところがあんまりなくて、デフォルトでいい感じなのでほとんど設定書かずにすんなり移行できたし、設定も圧倒的に書きやすい。

設定

github.com

plugin manager は fisher を使うことにして、これが読める形式で自分の設定も書いておく。 fishfile というのを置いておくと依存するプラグインも取ってきてくれるので、このリポジトリだけで設定が完結する。 config.fish だけは自前で配置用のMakefileを置いている。 これを叩く関数を書いたので fisher add Sixeight/fish-my-settingsしてからおもむろに install-my-settings とするだけで設定が完了する。

zshで育ててきた履歴は変換することも可能だけれど、いったん捨てることにしてみた。必要があればzshを起動してもってこればいいはず。

テーマはいったんシンプルな pure を採用してみたけど完璧という訳じゃないのでもうちょっと考えたい。

abbrがちょっとおもしろかった

abbr -a g git

fishは alias より abbr を使うような思想のようで、こちらを使っている。 g って入力すると git に展開してくれるので、履歴には正しいコマンドが残るのであとから見たときに分かりやすい。

まだ微妙なところ

  • zshのglobal aliasみたいなのがプラグインを使わないと出来ない
  • 色の設定が甘いので見た目がよくない (ここはこだわってしまう…)
  • rbenv /plenv のバージョンを出すのをやってない
  • 2行のpromptだと commandline -f repaint したときにカレント行が消えるなどがあって不便

参考

www.hsbt.org

yoshiori.github.io

github.com

syohex.hatenablog.com