はじめに
zsh の違和感を一歩ずつ取り除き、bash から卒業した方法を説明します。
zsh は周囲からの評判も良かったため、以前にも何度か使ったことがありました。
しかし、操作の違和感にどうしても慣れずに、毎回挫折していました。
最新 Mac OS の標準ログインシェルが zsh なったこともあり、改めて bash からの卒業を目指すことにしました。
移行ポリシー
-
無理せず一歩ずつ移行する
最初からchsh -s /bin/zsh
することはしません。
zsh な気分のときにだけ立ち上げて、少しずつ慣らしていきます。
-
キーバインドは bash に寄せる
zsh の操作に慣れることよりも、bash のキーバインドを引き継ぐことを優先します。
仕事で本番機に bash ログインする機会があるため。
Step1: zsh にログインしてみる
zsh な気分になったら、次のコマンドで zsh を起動します
$ zsh --login
bash に戻りたくなったら、新しいターミナルを起動するか、次のコマンドで zsh を終了します。
% exit
Step2: ~/.zshenv と ~/.zshrc を準備する
設定ファイルを準備しましょう。
bash のものとは、ひとまず以下の対応になると考えてください
-
~/.bash_profile
→~/.zshenv
-
~/.bashrc
→~/.zshrc
export
や alias
あたりの設定はそのままコピーすれば使えます。
Step3: キーバインドを bash に寄せる
違和感: キーバインドが意味不明で不快。まともに操作できない
個人事情: bash も使う必要があるので、zsh 独自のキーバインドに慣れたくない
bindkey は emacs モードを使用
デフォルトは emacs モードなので、ここでつまづく人は少ないと思いますが、
私が過去に挫折した最大の要因は、うっかり vim モードにしていたことでした。
vim モードだと、
^a
(カーソルを行頭へ)、^e
(カーソルを行末へ)、^p
(コマンド履歴戻る)、^n
(コマンド履歴進む) など、
bash でおなじみのキーバインドが使えなくなってしまいます。
よって、はじめは emacs モードをおすすめします。
bindkey -e
zsh 独自のキーバインドを修正
bash の ^u
(カーソル位置から行頭まで削除) が zsh では行全体を削除する動作になります。
% bindkey -L | grep \"\^U
bindkey "^U" kill-whole-line
これを bash のキーバインドに合わせるには、次のようにします。
bindkey "^U" backward-kill-line
私の場合、これだけで違和感が消えました。
他に気になるものがあれば、同様に修正してください。
Step4: プロンプトをカスタマイズする
違和感: プロンプトが見づらくて、なんだかやる気が起きない。
zsh のデフォルトプロンプトが見づらくてモチベーションが上がらなかったので、先にカスタマイズしておきました。
Before | → | After |
---|---|---|
→ |
# prompt
autoload -Uz vcs_info
precmd() { vcs_info }
setopt prompt_subst
zstyle ':vcs_info:git:*' check-for-changes true
zstyle ':vcs_info:git:*' stagedstr "%F{yellow} +%f" # %c
zstyle ':vcs_info:git:*' unstagedstr "%F{green} *%f" # %u
zstyle ':vcs_info:*' formats " %F{green}(%b%u%c%F{green})%f"
zstyle ':vcs_info:*' actionformats " %F{green}(%b%u%c%F{green}|%f%F{red}%a%f%F{green})%f"
local cline=$'\n'
local p_dir="%F{blue}[%m:%~]%f "
local p_git='${vcs_info_msg_0_}'
local p_mark="%B%(?,%F{green},%F{red})>%f%b"
PROMPT="$cline$p_dir $p_git$cline$p_mark "
- 参考: Git - ZshでGitを使う
- 参考: Zshでデキるプロンプト
私が bash で使っていたプロンプトとほぼ同じになりました。
この時点で、私の zsh に対する違和感はほぼ消えました。
Step5: zsh を育てる
葛藤: わざわざ zsh に移るメリットがない気がする…。
ここまでは、操作の違和感を取り除くことに重点を置いていました。
ここからは、zsh の良さを知る・見つける段階になります。
- 先輩たちの zshrc を探して、いろいろな設定を試す
- 自身が使わない設定は削除する
上記を地道に繰り返して .zshrc を育てます。
わからないことがあれば、公式マニュアルも参考になります。
> man zshoptions
Step6: bash との違いを把握する
不安: zsh に移行してしまって、本当に大丈夫なのだろうか…。
挙動の違いは色々とあるようです。
例えば、以下の記事などが参考になると思うので、軽く目を通しておきましょう。
Step7: 卒業式
気持ちの変化: zsh 最高!!
十分に zsh のメリットを感じられるようになったら、ログインシェルを切り替えましょう。
> chsh -s /bin/zsh
ご卒業おめでとうございます