oh-my-zshを使うのやめた

使っていた理由

とりあえずoh-my-zshを入れておけばzshがいい感じに動いてくれるし、面倒そうな設定もしなくて済むし便利、くらいの気持ちで使っていた。

不満

それほど大きな不満ではないけど、以下の2つが小さなストレスだった。

シェルの起動が遅いのは一概にoh-my-zshだけのせいとは言えず、プラグインの影響もあると思うのだけど、体感的に遅いと感じるレベルだった。

ブラックボックス感というのは、zshに対してどういう設定がされているかわからん、ということ。最初は「とりあえず使う」「便利」とか言ってても、だんだんと自分が明示的に設定したものだけが動いてる状態にしたくなってしまう。

どうやってやめたか

一度.zshrcをまっさらにしてから必要な設定を順番に書いていっただけ。もともと多くを必要とはしていなかったので、それほど大変ではなかった。なーんだ。気をつけた点としてはコードを書くときと同じで、理解してないことは書かないということ。意味がわからないときは調べてから書くようにした。

調べる方法としてはググったり、以下のサイトを見た。

あと、これは時間が経ったらどうやって設定したか忘れるな、というのだけ書いておく。

prompt

これはgitのブランチ名を出したいという要求がある。どうやろうかと調べたところhomebrewでgitを入れると/usr/local/etc/bash_completion.d/git-prompt.shというファイルができることがわかったのでこれを使った。使い方もこのファイルに書いてあるけど、__git_ps1という関数の引数の取り方が2パターンあって理解するのに少し苦労した。

ちなみにgit-prompt.shgithub上だとここにある。

git/git-prompt.sh at master · git/git

以下のcompletionでもお世話になるけど、git/contribの存在を初めて知った。

completion

これもあまり要求はないんだけどgitのブランチ名は補完してほしい。あと小文字を入力した時に大文字のファイルも補完してほしい。

ところでbrew infoすると最後にCaveatsが表示されることがあって、ここに大事なことが書いてあることが多い。gitだと以下のように出てて、zsh completionのことも書いてあるので、これを使う。

$ brew info git

(snip)

==> Caveats
Bash completion has been installed to:
  /usr/local/etc/bash_completion.d

zsh completions and functions have been installed to:
  /usr/local/share/zsh/site-functions

Emacs Lisp files have been installed to:
  /usr/local/share/emacs/site-lisp/git

/usr/local/share/zsh/site-functions/_gitというファイルがあるので中身を見ると設定方法が書いてあるのでその通りにやった。ちなみにこの_gitというファイルはgithub上だとgit-completion.zshという名前になっていて以下の場所にある。

git/git-completion.zsh at master · git/git

history

これはoh-my-zshhistory設定から一部をパクってきて少し調整した。53万というのをやりたくなったけど、真似するの恥ずかしくなってやめた。

oh-my-zsh/history.zsh at master · robbyrussell/oph-my-zsh

まとめ

最近だと fish shell というのを使う人も多いので、乗り換えようか?とも考えたけどzshに不満はないし、やめておいた。

しばらくこのまま.zshrcを育てながらやっていこうと思います。

ちなみにoh-my-zshにさよならした時のプルリクはこれでした。

Bye oh my zsh by takatoshiono · Pull Request #19 · takatoshiono/dotfiles

それではまた。