【ターミナル環境の変更】Zshの「oh-my-zsh」を「Prezto」に変更する手順
スポンサーリンク
だいぶ昔に、ターミナルをZshに変えて、よくわからないけど良さそうだったから「oh-my-zsh」を導入していた。
その時の記事。
ahrk-izo.hatenablog.com
ときは経って、「oh-my-zsh」よりも「Prezto」のほうが良さそうだったので、それに切り替得てみた。
その切り替えたときの備忘録を残す。
参考はこちら
Zsh + Prezto で快適コマンド環境を構築する | DevelopersIO
[目次]
スポンサーリンク
1. 現在のシェルを確認
いや、Zshなのはわかっているんだけど、念の為確認。何のシェルかによって編集する設定ファイルが異なるので。(bashとかでは違う設定ファイルだから)
$ echo $SHELL /usr/local/bin/zsh
うん、やっぱりZshだね。
Zshのバージョンも確認しておく
$ zsh --version zsh 5.3.1 (x86_64-apple-darwin16.5.0)
2. ~/.zshrcの中身確認
Zshの設定ファイルはHOMEにある「.zshrc」なので、まずその中身を確認しておく(人によってはファイルが異なるかも)
※
.zshrcの中身(コメントアウト以外を抜粋)
export ZSH=/Users/(user)/.oh-my-zsh ZSH_THEME="candy" plugins=(git) source $ZSH/oh-my-zsh.sh # zsh-completionsの設定 fpath=(/path/to/homebrew/share/zsh-completions $fpath) autoload -U compinit compinit -u source ~/.bash_profile
ざっくり解説してみると、
- 環境変数ZSHに、/Users/(user)/.oh-my-zsh を入れて
- ZSH_THEME="candy" と、plugins=(git) はよくわかんないけど
- source $ZSH/oh-my-zsh.sh でoh-my-zsh.sh を読み込む
- fpath=(/path/to/homebrew/share/zsh-completions $fpath)
- autoload -U compinit
- compinit -u とかはなんかやってるとして、
- source ~/.bash_profile で.bash_profile にかかれている内容も反映する(個人的にこのファイルにかかれている設定も必要なので)
(半分はよくわかっていないwひどいな。)
今回はこれらの中で、最後の「source ~/.bash_profile」の部分以外は全部変更する。
というかこの時点でそれ以外は削除してしまう。これでoh-my-zshは無効となった。
3. Preztoを取得する
さていよいよ今回の目当てである「Prezto」を取得する。
導入元はGitHub上のこちら
https://github.com/sorin-ionescu/prezto
基本的には、こちらのREADMEに書かれている通りにやる。
リポジトリをクローンする
$ git clone --recursive https://github.com/sorin-ionescu/prezto.git "${ZDOTDIR:-$HOME}/.zprezto"
READMEに書いてあるまんまだけど、一応理解して実行したいから解説しとこう。
- 「--recursive」: リポジトリ内に含まれるサブモジュールも同時に複製する
- 「${ZDOTDIR:-$HOME}」: 変数ZDOTDIRの値を使うけど、なかったら$HOMEの値を使う
※変数ZDOTDIRは値ないからHOMEだろう
※「echo ${ZDOTDIR:-$HOME}」ってやってみたら、やっぱりHOMEだった。
- つまり、HOMEの「~/.zprezto」にリポジトリをクローンしてくるってこと
…
はい。クローン完了
~/.zpreztoにこの通り取得できた
スポンサーリンク
4. ~/.zshrcを編集する
取得したPreztoをZshに導入するために、~/.zshrcを編集する(「~」はHOMEってことね)。
これも https://github.com/sorin-ionescu/prezto のREADMEにかかれている通り、
setopt EXTENDED_GLOB for rcfile in "${ZDOTDIR:-$HOME}"/.zprezto/runcoms/^README.md(.N); do ln -s "$rcfile" "${ZDOTDIR:-$HOME}/.${rcfile:t}" done
を実行する(ターミナルにコピペ)
これもよくわかんないまま実行するのもアレだから、解説する。
$ setopt EXTENDED_GLOB # zsh の EXTENDED_GLOB をONにする # ONにすると、除外パターン、大文字小文字同一視などすべての拡張表記が可能となる
for rcfile in "${ZDOTDIR:-$HOME}"/.zprezto/runcoms/^README.md(.N); do ln -s "$rcfile" "${ZDOTDIR:-$HOME}/.${rcfile:t}" done
- ~/.zprezto/runcoms にある中で、README.md以外のファイルでループ回す
- それらのシンボリックリンクを作成する
- ~/.zprezto/runcoms の中にあるの、zlogin, zlogout, zpreztorc, zprofile, zshenv, zshrc
実行すると、
In -s zlogin ~/.zlogin In -s zlogout ~/.zlogout In -s zpreztorc ~/.zpreztorc In -s zprofile ~/.zprofile In -s zshenv ~/.zshenv In -s zshrc ~/.zshrc
が実行された。
ln: /Users/(ユーザー名)/.zshrc: File exists
あれ?エラー。すでに~/.zshrcはあるよってこと。
~/.zshrcを削除してもう一度やればいい(バックアップとってるし、必要な分だけ後で追記すればよい)
ということで、~/.zshrc を削除して、もう一度実行。
するとファイルの中身は以下のようになった。
$ cat ~/.zshrc # # 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
※正確に言うと、~/.zshrc はシンボリックリンクなので、実体は、~/.zprezto/runcoms/zshrc なのであしからず
※他のできたシンボリックリンク(.zloginとか)の中身もそれぞれ違う
で、個人的に必要なので、~/.zshrc(実際には~/.zprezto/runcoms/zshrc)の最後の1行に以下を追記する
(~/.zshrc)
source ~/.bash_profile
最後に、ターミナル(iterm2)を再起動
よし、できた!
スポンサーリンク
[おまけ] ターミナル上に、Gitのブランチ名を表示する
Gitを使っているとき、今どのブランチに切っているかひと目でわかるように、ターミナルにブランチ名を表示する設定をする。
~/.zpreztorc を編集する
このファイルの
# Set the Prezto modules to load (browse modules). # The order matters. zstyle ':prezto:load' pmodule \ 'environment' \ 'terminal' \ 'editor' \ 'history' \ 'directory' \ 'spectrum' \ 'utility' \ 'completion' \ 'prompt'
の部分に、「'git'」を追記する
こんなふうに
# Set the Prezto modules to load (browse modules). # The order matters. zstyle ':prezto:load' pmodule \ 'environment' \ 'terminal' \ 'editor' \ 'history' \ 'directory' \ 'spectrum' \ 'utility' \ 'completion' \ 'prompt' \ 'git'
※下から2行目の最後に「\」を追記するのを忘れずに
すると、こんなふうに右端にブランチ名が表示される
これでOK。
よくわかんないLinuxコマンドが出てきたとき、ググって、かつ手元にコマンド集があると心強い。こういうやつはやっぱり紙がいいね。