zshの設定フレームワークであるPreztoでzshをカスタマイズする方法について紹介しています。

まず、Gitリポジトリをクローンします。
git clone --recursive https://github.com/sorin-ionescu/prezto.git "${ZDOTDIR:-$HOME}/.zprezto"次にzshの構成ファイルの作成を行います。
Caution
後述の「構成ファイル作成コマンド」を実行する前に、ホームディレクトリに存在する以下のファイルのバックアップを作成しておくことをおすすめします。
下記の「バックアップ用コマンドの例」ではホームディレクトリに .zsh-backupというディレクトリを作成して上記のファイルを全てコピーします。
mkdir -p ~/.zsh-backup && cp ~/.zlogin ~/.zlogout ~/.zprofile ~/.zshenv ~/.zshrc ~/.zsh-backup/バックアップが完了したら「構成ファイル作成コマンド」を実行します。
setopt EXTENDED_GLOB
for rcfile in "${ZDOTDIR:-$HOME}"/.zprezto/runcoms/^README.md(.N); do
ln -s "$rcfile" "${ZDOTDIR:-$HOME}/.${rcfile:t}"
done上記のコマンドを実行するとホームディレクトリに以下のシンボリックリンクが作成されます。
| コマンド | 説明 |
|---|---|
prompt -c | 適用しているテーマを確認 |
prompt -l | 使用可能なテーマ一覧を表示する |
prompt -p | テーマのプレビュー一覧を表示する |
prompt -s <theme> | 一時的にテーマを指定したものに設定する |
.zpreztorc を開いて以下のように修正する。
# Set the Prezto modules to load (browse modules).
# The order matters.
zstyle ':prezto:load' pmodule \
'git' \
'environment' \
# ... 中略 ... #
'completion' \
'prompt'zshの構成ファイルを編集していない場合は公式のREADME.mdに記載されている次のコマンドで更新できます。
cd $ZPREZTODIR
git pull
git submodule sync --recursive
git submodule update --init --recursiveしかし、.zshrcをカスタマイズしている場合などは git pull の時点で以下のようなエラーが出ます。
error: Your local changes to the following files would be overwritten by merge:
runcoms/zshrc
Please commit your changes or stash them before you merge.
Abortingこの場合は、以下のように git stash をして変更を一時的に退避させる必要があります。
cd $ZPREZTODIR
git stash
git pull
git stash pop
git submodule sync --recursive
git submodule update --init --recursive後述の「アンインストールコマンド」でアンインストールできます。
Caution
「アンインストールコマンド」を実行すると以下のzsh構成ファイルも削除されてしまいます。カスタマイズしている場合はバックアップを取っておくことをおすすめします。
本記事の手順でPreztoをインストールした場合、ホームディレクトリにあるこれらのファイルは ~/.zprezto/runcoms に存在するファイルへのシンボリックリンクになっています。アンインストールする場合 ~/.zprezto を削除するのでカスタマイズしている場合は、事前にバックアップしておくと良いです。
カスタマイズしていない場合はPreztoのGitHubリポジトリなどから復元可能です。
「アンインストール前のバックアップコマンド」を実行すると、ホームディレクトリに .zsh-uninstall-backup を作成してzsh構成ファイルをコピーします。
mkdir -p ~/.zsh-uninstall-backup && cp ~/.zlogin ~/.zlogout ~/.zprofile ~/.zshenv ~/.zshrc ~/.zsh-uninstall-backup/バックアップが完了したら、以下の「アンインストールコマンド」でアンインストールします。
rm -rf ~/.zprezto ~/.zshrc ~/.zlogin ~/.zlogout ~/.zpreztorc ~/.zprofile ~/.zshenvアンインストール後の ~/.zshrc に以下の記述がある場合は不要なので削除します。
# Source Prezto.
if [[ -s "${ZDOTDIR:-$HOME}/.zprezto/init.zsh" ]]; then
source "${ZDOTDIR:-$HOME}/.zprezto/init.zsh"
fi