はじめに
シェル環境はZsh派ということもあり、これまで環境をイイ感じに構築してくれる oh-my-zsh を入れていました。
が、oh-my-zsh インストール後、環境設定もほぼデフォルトの状態で使用。
メンテナンスも満足にしておらず、当時のインストール時の備忘録も残さないまま、勢いで入れてそのままズルズル使用していたので、一発奮起して Prezto に乗り換えてみます。
Prezto - Instantly Awesome Zsh
先人の知恵でたくさん記事があります。参考にさせていただきました。
https://blog.andooown.dev/post/2018/02/prezto/
https://qiita.com/Angelan1720/items/60431c85592fe90fcdd5
https://dev.classmethod.jp/tool/zsh-prezto/
oh-my-zsh や Prezto ってそもそも何なの
oh-my-zsh や Prezto は、Zshでラクに環境構築を行うためのフレームワークです。
一から自分で設定することもできますが、こういったものを利用することで、比較的手軽に環境を構築することが可能になります。
oh-my-zsh はオワコンで古い!とかいろんな意見を見ますが、依然人気は人気みたい。機能豊富だしいろいろできるもんね。
9 Best ZSH configuration frameworks as of 2019 - Slant
前提条件
今回の自分の環境です。
この環境下で Prezto に切り替えていきます。
- ターミナル: iTerm2 を利用
- Homebrew/Homebrew Cask によるパッケージ管理
- oh-my-zsh 適用済み
- Zsh は Homebrew でインストール済み
完全クリーンな状態から Prezto をインストールする場合
概ね以下のような手順になるかと思います。
- Homebrew をインストール (入っていない場合)
- Zsh をインストール
Homebrew の使用に関しては好みがあると思うので、必須ではないです
前段階における注意点
.zshrc などにカスタムで環境設定を入れている場合は既存のものを流用してもいいかも。
わたしはそこまで環境設定を追加していなかったので、完全にリプレースしました。
ただ有事の場合にロールバックができるように、念のため、設定ファイルとヒストリはバックアップを取っておきます。
-> % mkdir bkdir && mv .zsh* bkdir
-> % ll -A bkdir
total 632
-rw------- 1 user staff 309K 5 6 10:36 .zsh_history
-rw-r--r-- 1 user staff 2.9K 10 4 2018 .zshrc
切り替え手順
oh-my-zsh のアンインストール
アンインストールはコマンドがあります。README参照。
-> % uninstall_oh_my_zsh
Are you sure you want to remove Oh My Zsh? [y/N] y
Removing ~/.oh-my-zsh
Looking for original zsh config...
Switching back to bash
Changing shell for user.
Password for user:
Thanks for trying out Oh My Zsh. It's been uninstalled.
アンインストールが完了しました。
ターミナルを再起動すると、 bash になってます。
$ echo $SHELL
/bin/bash
Prezto のインストール
zshに切り替え。
$ zsh
Prezto のREADMEに書いてあるように、リポジトリをcloneしてきます。
$ git clone --recursive https://github.com/sorin-ionescu/prezto.git "${ZDOTDIR:-$HOME}/.zprezto"
以下のコマンドを実行すると、各種設定ファイルのシンボリックリンクが生成されます。
この時点ですでに存在しているファイルがあると、そのファイルに関してはリンクが生成されません。
$ setopt EXTENDED_GLOB
for rcfile in "${ZDOTDIR:-$HOME}"/.zprezto/runcoms/^README.md(.N); do
ln -s "$rcfile" "${ZDOTDIR:-$HOME}/.${rcfile:t}"
done
lrwxr-xr-x 1 user staff 37 5 6 11:01 /Users/userDir/.zlogin -> /Users/userDir/.zprezto/runcoms/zlogin
lrwxr-xr-x 1 user staff 38 5 6 11:01 /Users/userDir/.zlogout -> /Users/userDir/.zprezto/runcoms/zlogout
lrwxr-xr-x 1 user staff 40 5 6 11:01 /Users/userDir/.zpreztorc -> /Users/userDir/.zprezto/runcoms/zpreztorc
lrwxr-xr-x 1 user staff 39 5 6 11:01 /Users/userDir/.zprofile -> /Users/userDir/.zprezto/runcoms/zprofile
lrwxr-xr-x 1 user staff 37 5 6 11:01 /Users/userDir/.zshenv -> /Users/userDir/.zprezto/runcoms/zshenv
lrwxr-xr-x 1 user staff 36 5 6 11:03 /Users/userDir/.zshrc -> /Users/userDir/.zprezto/runcoms/zshrc
.zshrc の設定を流用したい場合
いったん既存ファイルは退避しておいて、差分だけをあとから Prezto の .zshrc に追記する形がいいかも。
試しにdiff取ってみましたが、なんだこれ。。
Prezto は超絶シンプルすぎる環境設定。
中略部分は何十行も oh-my-zsh の設定が入ってる部分です。
やっぱり oh-my-zsh はオーバースペックすぎたかな。
あと .zshrc にベタで書き込まれるパラメーターが多い。
oh-my-zsh のパラメーターファイルみたいなのがどっかにあって、それをincludeするとシンプルになりそうな気がする (主観です
$ diff -u ~/bk_zsh/.zshrc ~/.zshrc
--- /Users/user/bk_zsh/.zshrc 2018-10-04 13:38:32.000000000 +0900
+++ /Users/user/.zshrc 2019-05-06 10:53:24.000000000 +0900
@@ -1,92 +1,13 @@
-# Path to your oh-my-zsh installation.
-export ZSH=/Users/user/.oh-my-zsh
-
-# Set name of the theme to load.
-# Look in ~/.oh-my-zsh/themes/
-# Optionally, if you set this to "random", it'll load a random theme each
-# time that oh-my-zsh is loaded.
-ZSH_THEME="candy"
・・・ 中略 ・・・
+# Executes commands at the start of an interactive session.
+#
+# Authors:
+# Sorin Ionescu <sorin.ionescu@gmail.com>
+#
+# Source Prezto.
+if [[ -s "${ZDOTDIR:-$HOME}/.zprezto/init.zsh" ]]; then
+ source "${ZDOTDIR:-$HOME}/.zprezto/init.zsh"
+fi
+# Customize to your needs...
インストールが完了したので、ログインシェルを Homebrew の Zsh に変更し、ターミナルを再起動します。
$ chsh -s /usr/local/bin/zsh
補足:ログインシェル変更時のエラー
ログインシェルを変更する時に以下のように non-standard shell
とエラーが出てしまう場合。
/etc/shells に Homebrew の Zsh のパスを追記することでエラーを解消することができます。
$ chsh -s /usr/local/bin/zsh
Changing shell for user.
Password for user:
chsh: /usr/local/bin/zsh: non-standard shell
# List of acceptable shells for chpass(1).
# Ftpd will not allow users to connect who are not using
# one of these shells.
/bin/bash
/bin/csh
/bin/ksh
/bin/sh
/bin/tcsh
/bin/zsh
/usr/local/bin/zsh // Homebrew の Zsh のパスを追記
再起動後にシェルが変更されていることを確認します。
~ ❯❯❯ echo $SHELL
/usr/local/bin/zsh
oh-my-zsh で入ってたaliasのバックアップ忘れた…と思ったけど、 Prezto インストール後のalias確認したら普段よく使うコマンドの短縮形は入ってるから問題なさそう
テーマの設定
さて、肝心のテーマですが、Prezto にはpromptコマンドというものがあり、オプション -p をつけることでテーマのプレビューが表示されます。
~ ❯❯❯ prompt -p
powerlineの人をけっこう見かけるのでpowerlineが人気なのかな。
でもわたしはparadoxにします。
デフォルトがsorinになっているので、 .zpreztorc を編集してコメントアウトor上書きします。
#zstyle ':prezto:module:prompt' theme 'sorin'
zstyle ':prezto:module:prompt' theme 'paradox'
どのようなテーマがあるかはここを見るとわかりやすいかも。
Customizing Your Prezto Prompt - Mike Buss
テーマ適用時の注意点
上記記事のNoteにyou’ll need a Powerline-patched font.
と書いてある通り、paradoxをテーマとして適用する時は、Powerline用のフォントを使わないといけないみたいです。
Powerline用のフォントについてはこちら。
GitHub - powerline/fonts: Patched fonts for Powerline users.
Powerline用のフォントの適用
ということで、わたしは Source Code Pro を選択しました。
フォントのインストール方法はgit clone
だったり諸方法あるのですが、わたしは brew-cask-fonts が入っている環境なので、これを使ってインストールします。
❯ brew cask info font-source-code-pro-for-powerline [12:28:41]
font-source-code-pro-for-powerline: latest
https://github.com/powerline/fonts/tree/master/SourceCodePro
Not installed
From: https://github.com/Homebrew/homebrew-cask-fonts/blob/master/Casks/font-source-code-pro-for-powerline.rb
・・・以下略・・・
❯ brew cask install font-source-code-pro-for-powerline
インストールできたら、 iTerm2 のフォントの設定で Source Code Pro for Powerline を選択して完了です。
おわりに
とりあえずこれで使ってみて、もうちょっと便利にしたいなーと思ったら適宜調整していきます。
あと oh-my-zsh の残骸もお掃除しないと…