bash から zsh へ移行する
bash を使っていましたが、zshに乗り換えました。
結構前から mac のデフォルトのシェルが zsh になっています。そちらに合わせて zsh 使おうという対応です。 もろもろの設定を備忘のためにメモしています。
zsh の設定ファイル
.zshenv
に、常に反映したい設定を定義を定義します。
.zshrc
にはシェルを起動した環境にて反映する設定を定義します。
git のブランチを表示
zsh のカレントディレクトリの情報に、現在のブランチ名を表示するように設定します。
ホームディレクトリに .zsh
ディレクトリを作成して、以下のコマンドを実行してスクリプトを取得します。
curl -O https://raw.githubusercontent.com/git/git/master/contrib/completion/git-prompt.sh
そして、zshrc に以下を記述します。
fpath=(~/.zsh $fpath)
if [ -f ${HOME}/.zsh/git-prompt.sh ]; then
source ${HOME}/.zsh/git-prompt.sh
fi
setopt PROMPT_SUBST ; PS1='%F{magenta}%c%f$(__git_ps1 " (%s)") %F{yellow}\$%f '
現在のブランチ名と、その状態が表示されるようになりました。
git のコマンド補完
zsh にて、git のコマンド補完が動作するように設定します。
.zsh
ディレクトリにて、以下のコマンドを実行してスクリプトを取得します。
依存しているため .bash
の方のファイルも必要です。
curl -O https://raw.githubusercontent.com/git/git/master/contrib/completion/git-completion.bash
curl -O https://raw.githubusercontent.com/git/git/master/contrib/completion/git-completion.zsh
git-completion.zsh
を _git
にリネームします。
mv git-completion.zsh _git
そして、zshrc に以下を記述します。
if [ -f ${HOME}/.zsh/git-completion.bash ]; then
zstyle ':completion:*:*:git:*' script ~/.zsh/git-completion.bash
fi
autoload -U compinit
compinit -u
tab キーにて git のコマンドやブランチ名などの補完が効くようになりました。
ディレクトリやユーザー名の表示内容
上記で行った設定にて、シェルの左側のユーザー名やマシン名の表示についても設定しています。
setopt PROMPT_SUBST ; PS1='%F{magenta}%c%f$(__git_ps1 " (%s)") %F{yellow}\$%f '
ざっくりとは必要ないものを削除して、わかりやすいように色をつけています。
%F{magenta} --- %f
のように %F
で文字色の変更ができ、%f
で文字色の変更を解除できます。
ちなみに f を k にすると、背景色を設定できます。
シェル右側の表示
シェルの右側にはカレントディレクトリでも表示しておきます。日付や時間でもいいですね。
RPROMPT='%F{cyan}%~%f'
デフォルトのシェルを zsh に変更
以下のコマンドを実行することで、デフォルトで起動するシェルをzshに変更できます。
chsh -s /bin/zsh
終わりに
zsh に移行できました。他にも bash で使っていたlsコマンドのエイリアスとかも設定しています。
問題なく動くことが確認できたら、github の dotfiles リポジトリなんかに push しておくと良いですよね。