ろきメモ【ROKI MEMO】- ろきsanの備忘録 -

ろきさんの備忘録。プログラミング学習記録や開発記録、および学んだ知識等のアウトプットとシェアを目的に書いています。たまに普通のことも書きます。

【ターミナル環境の変更】Zshの「oh-my-zsh」を「Prezto」に変更する手順

スポンサーリンク

だいぶ昔に、ターミナルをZshに変えて、よくわからないけど良さそうだったから「oh-my-zsh」を導入していた。
その時の記事。
blog.rokisan.com


ときは経って、「oh-my-zsh」よりも「Prezto」のほうが良さそうだったので、それに切り替得てみた。
その切り替えたときの備忘録を残す。

参考はこちら
Zsh + Prezto で快適コマンド環境を構築する | Developers.IO


[目次]

スポンサーリンク



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」にリポジトリをクローンしてくるってこと


f:id:ahrk-izo:20200728163745p:plain

f:id:ahrk-izo:20200728163807p:plain

はい。クローン完了

~/.zpreztoにこの通り取得できた
f:id:ahrk-izo:20200728163949p:plain

スポンサーリンク



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)を再起動
f:id:ahrk-izo:20200728172053p:plain:w400
よし、できた!

スポンサーリンク



[おまけ] ターミナル上に、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行目の最後に「\」を追記するのを忘れずに

すると、こんなふうに右端にブランチ名が表示される
f:id:ahrk-izo:20200728172702p:plain


これでOK。


よくわかんないLinuxコマンドが出てきたとき、ググって、かつ手元にコマンド集があると心強い。こういうやつはやっぱり紙がいいね。