emahiro/b.log

日々の勉強の記録とか育児の記録とか。

Oh-My-Zsh -> Prezto に移行した

Overview

特に強い理由はないですが、長年愛用してきた Oh-My-Zsh から Prezto に移行しました。

github.com

強い理由はないと記載したけど、M1Pro でさえ若干ターミナルのもっさり感を感じていたのと、さすがにメンテナンスがされてなさすぎるプラグインもあって FW として微妙だなと思ったので一思いに乗り換えた、という感じです。
最初は何も入れない素の状態のターミナルを使おうかなと思いましたが、使ってて面白くないのでカスタマイズするために少なくともここ一年くらいはちゃんと動いてそうな Prezto を採用しました。

移行方法

Oh-My-Zsh の削除

手元の zshrc の中から oh-my-zsh に関する箇所だけを削除します。

export ZSH=/Users/$(whoami)/.oh-my-zsh
ZSH_THEME="$Theme"
plugins=(git)
source $ZSH/oh-my-zsh.sh

削除後に $HOME にある .oh-my-zsh を削除します。

以上です。

Prezto の導入

事前に手元の zshrc を backup しておいて削除します。

cp $HOME/.zshrc $HOME/.zshrc.back
rm .zshrc

その後 https://github.com/sorin-ionescu/prezto#installation に記載してある通りにコマンドを叩いてシェルを再起動すればすぐに使えるようになりました。

Editor の設定変更

Prezto で自動で参照される zsh の設定では Editor が nano になってしまっているので vim に変更します。

$ vim .zshprofile

export EDITOR='vim' // vim に変更
export VISUAL='vim' // vim に変更
export PAGER='less' // vim に変更

Git の情報の表示

Theme によっては Git のブランチを表示してくれる Theme がありますが、Prezto をインストールした時点では Theme にないので https://github.com/sorin-ionescu/prezto#themes の3つ目に記載されている .zpreztorc 内の preload module list に git を追加する、という作業を行う必要があります。

zstyle ':prezto:load' pmodule \
  'environment' \
  'terminal' \
  'editor' \
  'history' \
  'directory' \
  'spectrum' \
  'utility' \
  'completion' \
  'history-substring-search' \
  'prompt' \
  'git' # <- New

移行してみて

もっさり感は消えたけど以下のエントリで書かれてる内容の通りにプロファイリングしてみたら劇的に変わってる、というほどでもなかったです。

qiita.com

ただ確実に早くなったなと思ったのは git checkout コマンドで既存のブランチの一覧を保管するときに、今まではまじでびっくりするくらい遅かったんですが、これが快速になりました。

ただよくわからないのが、Prezto で history コマンドを叩くと直近10件程度しか表示されず、history の範囲を指定するような環境変数もなかったので一旦 alias hist=cat .zsh_history | peco で alias を張っています

元々の zsh の仕様って初めて知りました。今までは oh-my-zsh がうまいことやってくれていたんですね。

qiita.com

今は以下の設定を zshrc に入れて自前の history として動かしてます。

unalias history
alias history='fc -l -i 1 | fzf'

おしまい。