三行
zsh
からfish
に移行した- ほとんど設定してないけどいい感じになった (設定)
- しばらく使ってみて様子をみたい
経緯
10年以上 zsh を使ってきて、以前はこだわりをもって設定を書いていたが、だんだん面倒くさくなってきた。 デフォルトでいい感じにしてほしいという思いがあって数年前に設定を全部捨てて oh-my-zsh を使うようになった。 これはけっこうよくて必要なところだけを設定していくだけでいい感じの環境が作れたのである程度満足はしていたのだけれど不満もある。 まず重い。プロンプトが表示されるまでに時間がかかるのがストレス。 さらにzshのかっこいい設定は人類が読み込むには早すぎて、隠蔽されている部分を触りたくなると途端に面倒になった。
とにかくoh-my-zshからは撤退しようという機運が高まってきて、ここ数日どうしようか考えていたのだけれど、やっぱり設定をがんばるというのはしたくない。 そうこうしているうちにだんだん fish でもいい気がしてきてがっと移行してしまった。
全体的にていねいに作られていておもてなし感を感じるし、補完が優秀だったり、プラグイン周りの扱いがよく出来てる感じがある。 しかし、POSIX互換ではなくて独自路線を走っているので、脱出が大変そうというのが懸念でメインでは使えていなかった。
目的としては設定を出来るだけ書かないことなので、そうなると脱出もまあなんとかなるでしょということで今回は諦めて移行することに。 難しいところがあんまりなくて、デフォルトでいい感じなのでほとんど設定書かずにすんなり移行できたし、設定も圧倒的に書きやすい。
設定
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
したときにカレント行が消えるなどがあって不便