zsh のフレームワークは oh-my-zsh に始まり、zprezto を使ってきました。そのまま何年か zprezto を使い続けてきたのですが、Terminal の起動に時間がかかることが気になってきたので、速さを売りにしている Zim Framework(zimfw) に乗り換えました。初期設定をメモしておきます。macOS は Sequoia 15.7.3 で、zsh は macOS に最初から入っていた zsh 5.9 を使っています。
目次
- ~/.zshenv を作成する
- zimfw をインストールする
- homebrew の初期設定
- homebrew でインストールしたコマンドの入力補完
- PATH の追加
- alias や環境変数などを設定する
~/.zshenv を作成する
zimfw をインストールする前に、ホームディレクトリの ~/.zshenv に ZDOTDIR を設定しておきます。
export XDG_CONFIG_HOME="${XDG_CONFIG_HOME:=$HOME/.config}"
export ZDOTDIR="${ZDOTDIR:=$XDG_CONFIG_HOME/zsh}"
ZDOTDIR は zsh の設定ファイルの場所を指定する環境変数で、これを設定すると .zshrc などが指定したディレクトリから読み込まれるようになります。zimfw のインストーラーもこの設定に従います。私はホームディレクトリが散らからないようにするためと、zsh のフレームワークを簡単に切り替えられるようにこの設定をしていますが、設定をしていなくても動作しますので、お好みで設定をしてください。この記事では ZDOTDIR を設定していることを前提に進めます。
zimfw をインストールする
公式のインストーラーを使います。
curl -fsSL https://raw.githubusercontent.com/zimfw/install/master/install.zsh | zsh
~/.config/zsh に zimfw がインストールされます。同じ場所に .zshrc も初期設定された状態で作成されます。
ターミナルを再起動すると、zimfw が有効になった zsh が起動します。インストーラーによりいくつかのモジュールがデフォルトで有効になっていて、この状態でもかなり便利に使えます。
homebrew の初期設定
Homebrew Installation > Post-installation steps - Homebrew Documentation を参考に、homebrew の初期設定を行います。
~/.config/zsh/.zprofile に以下を追加します。
eval "$(brew shellenv)"
ターミナルを再起動します。これで、brew コマンドが PATH に追加されたりします。
homebrew でインストールしたコマンドの入力補完
続いて brew コマンドでインストールしたコマンドを tab キーで入力補完できるようにします。brew Shell Completion in zsh — Homebrew Documentation を参考に設定します。
homebrew のドキュメントに compinit を追加するように書かれていますが、インストーラを使ってセットアップした zimfw は completion モジュールが有効になっていて compinit はそこで実行されるので、compinit は追加しなくても大丈夫です。そのため .zprofile には以下の eval の行だけを追加すれば良くなります。
eval "$(brew shellenv)"
あれ?これはひとつ前のセクションで設定した内容と同じですね。ということで zimfw における homebrew のコマンドの入力補完は、homebrew の初期設定とともに設定されていて、特別なことをしなくても大丈夫でした。
動作確認をしたい場合、 /opt/homebrew/share/zsh/site-functions ディレクトリに入力補完のためのファイルがあるので、そこにあるコマンドを入力して tab キーを押してみてください。
私の場合は GitHub CLI である gh コマンドがあったので、gh <tab キー> と入力したところ、以下のように候補がでてきました。初回だけ時間がかかることがあります。
% gh upgrade
-- completions --
agent-task -- Work with agent tasks
alias -- Create command shortcuts
api -- Make an authenticated GitHub API request
attestation -- Work with artifact attestations
PATH の追加
自身でインストールしたコマンドを使うために PATH を追加します。zimfw のドキュメントには書かれていなかったので、zsh のお作法に従います。たとえば ~/.local/bin と ~/bin を PATH に追加する場合は以下のようにします。
~/.config/zsh/.zprofile
path=(
$HOME/bin
$HOME/.local/bin
$path
)
これは zimfw の機能ではなく、zsh の機能です。上から順に優先度が高くなります。homebrew のコマンドの PATH は、少し前のセクションで紹介した初期設定で自動的に追加されるので、ここに書かなくても大丈夫です。
alias や環境変数などを設定する
alias や環境変数などの設定方法についても zimfw のドキュメントには書かれていなかったので、~/.config/zsh/.zshrc や ~/.config/zsh/.zprofile に書く形になりそうです。私はインストーラーにより作成された .zshrc をあまりいじりたくなかったので、以下のように別のファイルに alias などを書いて、.zshrc の一番最後で読み込ませる形にしました。
# Initialize modules.
source ${ZIM_HOME}/init.zsh
# }}} End configuration added by Zim Framework install
# ------------------
# My custom configuration
# ------------------
if [ -f "${ZDOTDIR:-$HOME}/.zshrc_local" ]; then
source "${ZDOTDIR:-$HOME}/.zshrc_local"
fi