🐕

Oh My ZshからPreztoへの乗り換え

2023/01/23に公開

Oh My Zshとはzshを使いやすく拡張してくれるものですが、.zshrcファイルが結構汚れてしまうのと、ブラックボックス化してしまうのが嫌だったので、Preztoに変えました。その方法を残しておきたいと思います。

結果として.zshrcファイルがすっきりしたし、あんまりOh My Zsh使いこなせてなかったのでPreztoで十分だなと思ったので変えて良かったです。

Oh My Zsh のアンインストール

$ uninstall_oh_my_zsh

上記を実行することで、Oh My Zshのインストールにより.zshrcファイルに追記された記述が削除されます。

Preztoのインストール

$ git clone --recursive https://github.com/sorin-ionescu/prezto.git "${ZDOTDIR:-$HOME}/.zprezto"

--recursiveはサブモジュールまでcloneしてきてくれます。
git clone 第一引数 第二引数なので、第二引数でダウンロード先ディレクトリを指定してます。
${ZDOTDIR:-$HOME}の意味はZDOTDIRに値が指定されていたらその値で、されていなかったら$HOMEの値が適用されます。$HOMEが~だったら、~/.zprezto配下にダウンロードされるということです。

${parameter:-word}
デフォルトの値を使います。 parameter が設定されていないか空文字列であれば、 word を展開したものに置換されます。そうでなければ、 parameter の値に置換されます。

$ setopt EXTENDED_GLOB
for rcfile in "${ZDOTDIR:-$HOME}"/.zprezto/runcoms/^(.N); do
  ln -s "$rcfile" "${ZDOTDIR:-$HOME}/.${rcfile:t}"
done

$ setopt EXTENDED_GLOBはzshのオプション機能でワイルドカードを使ってファイル名のパターンマッチを行えるようになります。
^は否定globなのでREADME.md以外、ということになります。
(.N)はNull globで、合致するファイルがなくてもエラーを回避できます。
ln -s となっているので作るリンクはシンボリックリンクになります。${ZDOTDIR:-$HOME}/.${rcfile:t}ここが作られるシンボリックリンクになります。

.zprofileや.zshrc ファイルが既に存在する場合、エラーが出るので、これらのファイルの中身を一旦他のところに退避させてから、削除する必要があります。

再起動した時点でターミナルが変わっていると思います。
あとはテーマを好きなものに変更したりしてカスタマイズしてください!

参考

https://ohmyz.sh/
https://github.com/sorin-ionescu/prezto
https://qiita.com/kinchiki/items/57e9391128d07819c321
https://linuxjm.osdn.jp/html/GNU_bash/man1/bash.1.html

Discussion