macOS Catalina にアップデートすると、デフォルトシェルが bash から zsh に変更されていました。
ターミナルを起動すると、以下のようなメッセージが表示されます。
The default interactive shell is now zsh.
To update your account to use zsh, please run `chsh -s /bin/zsh`.
For more details, please visit https://support.apple.com/kb/HT208050.
bash のまま使い続けることもできますが、これを機に zsh に乗り換えたいと思い、指示通り、次のコマンドを実行して、ターミナルを再起動してみました。
$ chsh -s /bin/zsh
次のコマンドを実行すれば、使用中のシェルが確認できます。
% echo $SHELL
/bin/zsh
ちなみに、次のコマンドでは、使用可能なシェルの一覧を取得することができ、
% cat /etc/shells
# 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/dash
/bin/ksh
/bin/sh
/bin/tcsh
/bin/zsh
いざという時には、zsh に切り替えた時と同様にして、簡単にシェルを変更できます。
% chsh -s /bin/bash
さておき、あとは「 オススメのターミナル初期設定の手順 」に書いたような bash の設定ファイルを元に、zsh の設定ファイルを作成するだけです。
まぁ、作成するだけ、と言っても、これは、現在の設定ファイルを作り込んでいる人ほど、大変な作業になると思いますが、頑張りましょう。笑
PROMPT="%B%F{green}%n@[%*]%f%b:%B%F{blue}%~%f%b%# "
alias ls='ls -AFG'
alias ll='ls -hlt'
alias history='history -Di'
# http://zsh.sourceforge.net/Doc/Release/Options.html#Description-of-Options
setopt hist_ignore_dups
setopt share_history
HISTSIZE=1000
HISTFILE=~/.zsh_history
SAVEHIST=100000
setopt nonomatch
setopt correct
autoload -Uz compinit && compinit
# http://zsh.sourceforge.net/Doc/Release/Zsh-Line-Editor.html#History-Control
bindkey '^P' history-beginning-search-backward
bindkey '^N' history-beginning-search-forward
# https://git-scm.com/book/en/v2/Appendix-A%3A-Git-in-Other-Environments-Git-in-Zsh
autoload -Uz vcs_info
precmd_vcs_info() { vcs_info }
precmd_functions+=( precmd_vcs_info )
setopt prompt_subst
RPROMPT=\$vcs_info_msg_0_
# PROMPT=\$vcs_info_msg_0_'%# '
# zstyle ':vcs_info:git:*' formats '%b'
# http://zsh.sourceforge.net/Doc/Release/User-Contributions.html#vcs_005finfo-Configuration
zstyle ':vcs_info:git:*' formats '[%F{yellow}%b%f]%u%c'
zstyle ':vcs_info:git:*' actionformats '[%b|%a]'
zstyle ':vcs_info:git:*' check-for-changes true
zstyle ':vcs_info:git:*' stagedstr ":%F{green}!%f"
zstyle ':vcs_info:git:*' unstagedstr ":%F{red}+%f"
最後に、次のコマンドで実行して、ちゃんと設定できているかどうか、確認しておきます。
% source ~/.zshrc
これで、とりあえず、初期設定は終わりとしますが、どうやら zsh には、数多くの便利な機能があるようなので、随時、設定ファイルを更新して、徐々に使いこなしていきたいですね。
上記の設定ファイルでは、Git 関連も含むプロンプトの表示やエイリアス、コマンド履歴周りの設定を除けば、特別な機能として、以下のものを導入しています。
コマンドのスペルミスの修正
setopt correct
コマンドを実行しようとした際に、スペルミスがあれば、修正を提案してくれます。
コマンドの補完
autoload -Uz compinit && compinit
コマンドを途中まで打って「 Tab 」を押すと、残りの部分を補完してくれます。
コマンド履歴の検索
bindkey '^P' history-beginning-search-backward
bindkey '^N' history-beginning-search-forward
上記の例では、コマンドを途中まで打って「 control + P 」を押すと、それに続く内容を、以前に実行したコマンドを順番に遡って検索できます。
行き過ぎたら「 control + N 」を押せば、逆方向へ検索できます。