新しい MacBook Pro の Zsh 環境を Zim フレームワークで構築してみました。Bash の使用歴が長いため Zsh は初心者ですが、構築に使用した Zim フレームワークの日本語情報が少ないので記事にまとめました。
Zim フレームワークとは
Zim (Zsh IMproved) フレームワークは、便利なモジュールと様々なテーマが付属している高速な Zsh 設定フレームワークです。Zsh 設定フレームワークとしては Oh-My-Zsh や Prezto が有名ですが、Zim フレームワークはそれらと比較しても高速です。公式の Web サイトとドキュメントがあり、GitHub の zimfw/zimfw で開発されています。また、Homebrew のようにワンライナーでインストールでき、専用の zimfw コマンドでフレームワークを管理できます。
Zim フレームワークをインストールする
下記のコマンドでインストールできます。
curl -fsSL https://raw.githubusercontent.com/zimfw/install/master/install.zsh | zsh
) Using Zsh version 5.8
) ZIM_HOME not set, using the default one.
) Zsh is your default shell.
) No other Zsh frameworks detected.
) Downloaded the Zim script to /Users/takuyatsuchida/.zim/zimfw.zsh
) Prepended Zim template to /Users/takuyatsuchida/.zimrc
) Prepended Zim template to /Users/takuyatsuchida/.zshrc
) Installed modules.
All done. Enjoy your Zsh IMproved! Restart your terminal for changes to take effect.
ホームディレクトリに .zim ディレクトリが作成され、Zim フレームワークのファイルがダウンロードされます。また、ホームディレクトリに Zim フレームワークの設定ファイルである .zimrc ファイルが作成されます。最後に、.zshrc ファイルに設定が追加されます。
ターミナルの再起動後、下記のコマンドを入力し、Zim フレームワークのバージョンが表示されればインストールは完了です。
zimfw version
1.8.0
インストールしただけの状態でもかなり便利なのですが、Zim フレームワークのモジュールやテーマを設定するとより便利になるので、以下ではその設定方法を解説していきます。
.zshrc ファイルを設定する
.zshrc ファイルに追加される初期設定はコメント含めて100行以上あります。Zim フレームワークを読み込むだけではなく、Zsh 本体や Zim フレームワーク、モジュールの設定も含まれています。コメントアウト状態の設定も追記され、有効にするかどうか迷うものもあるので、一通り説明しながら設定していきます。
Zsh 設定
Zsh 本体の設定を説明します。
ヒストリ
# Remove older command from the history if a duplicate is to be added.
setopt HIST_IGNORE_ALL_DUPS
HIST_IGNORE_ALL_DUPS オプションが有効にされています。ヒストリにある重複するコマンドを削除するオプションです。不要と感じるようであれば、設定行を削除して構いません。
入出力
# Set editor default keymap to emacs (`-e`) or vi (`-v`)
bindkey -e
# Prompt for spelling correction of commands.
#setopt CORRECT
# Customize spelling correction prompt.
#SPROMPT='zsh: correct %F{red}%R%f to %F{green}%r%f [nyae]? '
# Remove path separator from WORDCHARS.
WORDCHARS=${WORDCHARS//[\/]}
bindkey コマンドで Emacs キーバインドが設定されています。明示的に設定しなくても Emacs キーバインドになるので、Emacs キーバインドを使用する場合は、設定行を削除して構いません。Vi キーバインドを使用する場合は明示的に bindkey -v を設定しましょう。
CORRECT オプションと SPROMPT パラメーターがコメントアウトされています。CORRECT オプションは、コマンドのタイポを訂正してくれる設定です。コマンドをタイポすることが多い人は有効にしてみてもいいかもしれません。SPROMPT パラメーターは、修正プロンプトのメッセージなので好みのメッセージに修正すればいいと思います。
WORDCHARS パラメーターが設定されています。変数操作でパス区切り文字を WORDCHARS から削除しています。Option + Left や Option + Right などの操作で単語単位の移動をするときに、パス区切り文字で停止するようになります。この設定がないと不便なので残しておきましょう。
Zim 設定
Zim フレームワークの設定を説明します。しかしながら、Zim フレームワークはモジュールで機能拡張するため、Zim フレームワーク本体の設定はほとんどありません。
# Use degit instead of git as the default tool to install and update modules.
#zstyle ':zim:zmodule' use 'degit'
唯一ある設定は、Git の代替手段として Zim フレームワークに付属する degit ツールを使用する設定で、コメントアウトされています。Git がインストールされている環境が一般的だと思うので、設定行を削除して構いません。
モジュール設定
モジュールの利用については後述するので、ここでは .zshrc ファイルに追加される初期設定におけるモジュールの設定について説明します。
git
git モジュールは、git コマンドの便利なエイリアスを提供しています。git branch なら Gb、git commit –verbose なら Gc、git status –short なら Gws です。
# Set a custom prefix for the generated aliases. The default prefix is 'G'.
#zstyle ':zim:git' aliases-prefix 'g'
エイリアスのプリフィックスを変更する設定がコメントアウトされています。プリフィックスを g にすると Prezto における git コマンドのエイリアスと類似したものになります。
私の感覚として、G から始まると git コマンドのエイリアスを打ってる感がありますが、2文字目をそのまま大文字で打ってしまうようなタイプミスが多くなりそうです。g から始まると git コマンドのエイリアスを打ってる感はありませんが、タイプミスは少なくなりそうです。私の環境ではプリフィックスを g にしても重複するコマンドはなさそうだったので、g にすることによる不利益はなさそうでした。
input
input モジュールは、Zsh が入力を解釈するときの奇抜さを修正します。また、URL を貼り付けたときに手動でエスケープする必要がないようにしてくれるそうです。
# Append `../` to your input for each `.` you type after an initial `..`
#zstyle ':zim:input' double-dot-expand yes
奇抜さの修正とは関係ないですが、.. に続いて . を入力したときに ../ を追加する設定がコメントアウトされています。つまり、… と入力すると ../.. になり、….. と入力すると ../../../.. に展開される機能です。頻繁に複数のディレクトリを遡ることはあまりなさそうですが、必要そうであれば設定しましょう。
termtitle
termtitle モジュールは、ターミナルウィンドウのタイトルを設定します。
# Set a custom terminal title format using prompt expansion escape sequences.
# See http://zsh.sourceforge.net/Doc/Release/Prompt-Expansion.html#Simple-Prompt-Escapes
# If none is provided, the default '%n@%m: %~' is used.
#zstyle ':zim:termtitle' format '%1~'
ターミナルウィンドウのタイトルをフォーマットする設定がコメントアウトされています。macOS 標準のターミナルにはこの設定が反映されないので、設定行を削除して構いません。
zsh-autosuggestions
zsh-autosuggestions モジュールは、高速かつ控えめにコマンドをサジェストします。
# Disable automatic widget re-binding on each precmd. This can be set when
# zsh-users/zsh-autosuggestions is the last module in your ~/.zimrc.
ZSH_AUTOSUGGEST_MANUAL_REBIND=1
# Customize the style that the suggestions are shown with.
# See https://github.com/zsh-users/zsh-autosuggestions/blob/master/README.md#suggestion-highlight-style
#ZSH_AUTOSUGGEST_HIGHLIGHT_STYLE='fg=242'
ZSH_AUTOSUGGEST_MANUAL_REBIND パラメーターが1に設定されています。設定しておくと性能向上が期待できますが、.zimrc の末尾で zsh-autosuggestions モジュールを読み込むようにする必要があります。設定の有無で性能差を体感できるようであれば設定しておきましょう。
ZSH_AUTOSUGGEST_HIGHLIGHT_STYLE パラメーターがコメントアウトされています。サジェストのスタイルを好みに設定できます。初期設定でも十分だと思うので、設定行を削除して構いません。
zsh-syntax-highlighting
zsh-syntax-highlighting モジュールは、コマンドをシンタックスハイライトします。
# Set what highlighters will be used.
# See https://github.com/zsh-users/zsh-syntax-highlighting/blob/master/docs/highlighters.md
ZSH_HIGHLIGHT_HIGHLIGHTERS=(main brackets)
# Customize the main highlighter styles.
# See https://github.com/zsh-users/zsh-syntax-highlighting/blob/master/docs/highlighters/main.md#how-to-tweak-it
#typeset -A ZSH_HIGHLIGHT_STYLES
#ZSH_HIGHLIGHT_STYLES[comment]='fg=242'
ZSH_HIGHLIGHT_HIGHLIGHTERS 配列パラメーターに main と brackets が設定されています。main は基本的なハイライト機能です。brackets は括弧の対をハイライトする機能です。コマンドで括弧を多用するのであれば brackets を含めた設定を残しましょう。そうでなければ ZSH_HIGHLIGHT_HIGHLIGHTERS 配列パラメーターが設定されていなくても読み込まれる main だけで十分だと思うので、設定行を削除して構いません。
ZSH_HIGHLIGHT_STYLES 連想配列パラメーターがコメントアウトされています。ハイライトのスタイルを好みに設定できます。初期設定でも十分だと思うので、設定行を削除して構いません。
モジュール初期化
Zim フレームワークが生成したモジュールを読み込むスクリプトを実行する部分です。この内容を理解するときには、Zim フレームワークの手動インストール手順が参考になります。
ZIM_HOME=${ZDOTDIR:-${HOME}}/.zim
# Download zimfw plugin manager if missing.
if [[ ! -e ${ZIM_HOME}/zimfw.zsh ]]; then
if (( ${+commands[curl]} )); then
curl -fsSL --create-dirs -o ${ZIM_HOME}/zimfw.zsh \
https://github.com/zimfw/zimfw/releases/latest/download/zimfw.zsh
else
mkdir -p ${ZIM_HOME} && wget -nv -O ${ZIM_HOME}/zimfw.zsh \
https://github.com/zimfw/zimfw/releases/latest/download/zimfw.zsh
fi
fi
# Install missing modules, and update ${ZIM_HOME}/init.zsh if missing or outdated.
if [[ ! ${ZIM_HOME}/init.zsh -nt ${ZDOTDIR:-${HOME}}/.zimrc ]]; then
source ${ZIM_HOME}/zimfw.zsh init -q
fi
# Initialize modules.
source ${ZIM_HOME}/init.zsh
1行目では、Zim フレームワークのホームディレクトリを ZIM_HOME シェル変数に設定しています。通常は ~/.zim と等価になります。${ZDOTDIR:-${HOME}} を見慣れないかもしれませんが、ZDOTDIR パラメーターが設定されていればその値を使用し、設定されていなければ HOME パラメーターを使用するという意味です。
2〜11行目では、Zim フレームワークの zimfw.zsh ファイルが存在しないときにダウンロードする処理が記述されています。前述のインストール手順でダウンロード済みで、このファイルが存在しなくなることはあまり考えられないので、これらのスクリプト行を削除して構いません。
12〜15行目では、init.zsh ファイルが .zimrc ファイルより新しくない場合、つまり .zimrc ファイルが更新されていて、その更新を init.zsh が反映していない場合に14行目を実行します。14行目は、zimfw install と同じ動作をするターミナル起動時用の init サブコマンドを出力を抑制して実行しています。
ほとんどの環境では下記のように書き直すことができます。
[[ ~/.zimrc -nt ~/.zim/init.zsh ]] && source ~/.zim/zimfw.zsh init -q
16〜17行目では、モジュールを読み込むスクリプトである init.zsh ファイルを実行しています。利用するモジュールを定義する .zimrc ファイルから生成された init.zsh ファイルを実行することでモジュールが読み込まれます。
初期化後モジュール設定
モジュールを読み込むスクリプトを実行した後の設定です。
zsh-history-substring-search
zsh-history-substring-search モジュールは、指定したキーを押下することで、入力中のコマンドでヒストリを検索します。
zmodload -F zsh/terminfo +p:terminfo
# Bind ^[[A/^[[B manually so up/down works both before and after zle-line-init
for key ('^[[A' '^P' ${terminfo[kcuu1]}) bindkey ${key} history-substring-search-up
for key ('^[[B' '^N' ${terminfo[kcud1]}) bindkey ${key} history-substring-search-down
for key ('k') bindkey -M vicmd ${key} history-substring-search-up
for key ('j') bindkey -M vicmd ${key} history-substring-search-down
unset key
Up や Down を押下したとき、また Control + P や Control + N を押下したときに検索するように設定しています。さらに、Vi キーバインドで k や j を入力したときに検索するようにも設定されています。設定スクリプトの詳細は割愛しますが、初期設定の動作で問題ないようであればこのまま残しておきましょう。
設定を簡潔にする場合は、zsh-history-substring-search の使用方法に従って設定項目を試しましょう。macOS 環境で Emacs キーバインドを使用する場合は下記の設定だけで十分なようです。
bindkey $terminfo[kcuu1] history-substring-search-up
bindkey $terminfo[kcud1] history-substring-search-down
bindkey -M emacs '^P' history-substring-search-up
bindkey -M emacs '^N' history-substring-search-down
暫定版の .zshrc ファイル
Zim フレームワークが .zshrc ファイルに追加する初期設定を吟味して、暫定的に下記のような .zshrc ファイルを作成しました。
WORDCHARS=${WORDCHARS//[\/]}
zstyle ':zim:input' double-dot-expand yes
[[ ~/.zimrc -nt ~/.zim/init.zsh ]] && source ~/.zim/zimfw.zsh init -q
source ~/.zim/init.zsh
bindkey $terminfo[kcuu1] history-substring-search-up
bindkey $terminfo[kcud1] history-substring-search-down
bindkey -M emacs '^P' history-substring-search-up
bindkey -M emacs '^N' history-substring-search-down
次節では、便利なモジュールを利用する設定について説明していきます。
.zimrc ファイルを設定する
.zimrc ファイルを設定することでモジュールを利用できます。下表のように Zim フレームワークはいくつかのモジュールを提供しています。また、Zsh コミュニティ (zsh-users) のモジュールなども読み込むことができます。.zimrc ファイルの初期設定に含まれるものを中心に推奨のモジュールを解説していきます。
推奨 | カテゴリ | モジュール | 説明 |
---|---|---|---|
✔️ | 振る舞い | completion | スマートで広範囲なタブ補完を有効化し設定する。 |
✔️ | 振る舞い | environment | 一般的な Zsh 組み込みのオプションを設定する。 |
✔️ | 振る舞い | input | 入力イベントに対して正しい bindkey を適用する。 |
✔️ | 生産性 | archive | アーカイブを簡単に操作するための圧縮と展開の機能を提供する。 |
生産性 | asdf | asdf の自動インストールや direnv プラグインの最適な使用方法を設定する。 | |
✔️ | 生産性 | exa | exa へのエイリアスを追加し、より良い標準設定を提供する。 |
✔️ | 生産性 | fzf | ファイル名やディレクトリ名の取得を高速化するように fzf を設定する。 |
✔️ | 生産性 | git | Git のエイリアスと関数を提供する。 |
生産性 | pvenv | すべての Python venv を一元管理する。 | |
生産性 | ruby | ruby や bundler、rbenv、rvm のエイリアスと初期化機能を提供する。 | |
生産性 | ssh | ssh-agent をロードする便利な方法を提供する。 | |
生産性 | termtitle | ターミナルのタイトルを設定する。 | |
✔️ | 生産性 | utility | 有用なエイリアスや関数を追加する。ls や grep、less に色を設定する。 |
プロンプト | duration-info | 最後のコマンドの実行にかかった時間をプロンプトに表示する。 | |
プロンプト | git-info | git リポジトリの状態情報をプロンプトに表示する。 | |
プロンプト | prompt-pwd | プロンプトが使用する現在の作業ディレクトリをフォーマットする。 | |
✔️ | ディストロ | homebrew | Homebrew のエイリアスを追加する。 |
ディストロ | pacman | pacman パッケージマネージャーのエイリアスを追加する。 | |
✔️ | zsh-users | zsh-autosuggestions | 入力からヒストリや補完をもとにコマンドを提案する。 |
✔️ | zsh-users | zsh-completions | 補完定義を追加する。 |
✔️ | zsh-users | zsh-history-substring-search | 入力中のコマンドでヒストリを検索する。 |
✔️ | zsh-users | zsh-syntax-highlighting | 入力中のコマンドへのシンタックスハイライトを提供する。 |
振る舞い
Zsh の振る舞いに関連するモジュールです。completion と environment、input について解説します。
completion
completion モジュールは補完を拡張します。Zsh における補完関連のオプションやスタイルをいい感じの設定にしてくれるモジュールなので読み込んでおきましょう。なお、後述する zsh-completions モジュールのような補完定義を追加するモジュールより後に読み込むように指定されています。
environment
environment モジュールは Zsh 組み込みのオプションを設定します。ディレクトリ操作やファイル名生成(グロッビング)、ヒストリ、入出力、ジョブ制御のオプションをいい感じに設定してくれるモジュールなので読み込んでおきましょう。
input
input モジュールは入力イベントに対して正しい bindkey を適用します。このモジュールがないと、Zsh が入力を解釈する方法の奇抜さを体験することになるそうです。キーバインディングやスマート URL ペースト、ダブルドット親ディレクトリ展開(要追加設定)などを設定してくれるのでこちらも読み込んでおきましょう。
生産性
Zsh の生産性に関連するモジュールです。archive と exa、fzf、git、utility について解説します。
archive
archive モジュールは、アーカイブを簡単に操作するための圧縮と展開の機能を提供します。アーカイブに圧縮する archive コマンドとアーカイブを展開する unarchive コマンド、アーカイブ内のファイルを一覧する lsarchive コマンドを利用できるようになります。
このモジュールは、アーカイブファイルの拡張子で圧縮/展開に使用するコマンドを判別してくれるところが便利です。とくに、unarchive コマンドにアーカイブファイルを渡すだけで、普段使用しない形式のアーカイブでも展開できるのは大きな利点です。しかしながら、最近は ZIP 形式のアーカイブを利用することが多く、また、パスワード付きアーカイブは個別のコマンドで実施する必要があるため、利便性の向上は限定的とも言えます。
私の場合、たまに .tar.bz や .tar.gz などのファイルを展開することがあります。そのとき、tar コマンドのオプションを思い出すことなく unarchive file.tar.bz や unarchive file.tar.gz として展開できるのは便利なので、このモジュールを読み込むように設定しています。
exa
exa モジュールは、exa コマンドへのエイリアスを追加し、より良い標準設定を提供します。ls コマンドが exa コマンドへのエイリアスになり、普段使用している ls コマンドの出力が高機能になります。また、ls -l のエイリアスとなる ll コマンドや ls -la コマンドのエイリアスとなる l コマンドなども追加されます。なお、後述する utility モジュールより後に読み込むように指定されています。
このモジュールを使用する場合、exa コマンドをインストールする必要があります。Homebrew を使用しているのであれば、下記のコマンドでインストールできます。
brew install exa
fzf
fzf モジュールは、ファイル名やディレクトリ名の取得を高速化するように fzf コマンドを設定します。このコマンドでファイルやディレクトリ、ヒストリなどのインクリメンタル検索ができるようになります。
コマンドの途中で ** と入力した上で Tab キーを押下するとインクリメンタル検索が起動します。また、下記のようなショートカットキーでもインクリメンタル検索を起動できます。
キー | 検索対象 |
---|---|
Control + T | ファイル(プレビュー付き) |
Control + R | ヒストリ |
Esc + C | ディレクトリ |
このモジュールを使用する場合、fzf コマンドや fd コマンド、bat コマンドをインストールする必要があります。Homebrew を使用しているのであれば、下記のコマンドでインストールできます。インストールスクリプトを実行することで、ホームディレクトリに .fzf.zsh ファイルが作成され、.zshrc ファイルに設定が追加されます。
brew install fzf fd bat
$(brew --prefix)/opt/fzf/install --key-bindings --completion --update-rc --no-bash --no-fish
git
git モジュールは、Git のエイリアスと関数を提供します。git モジュールの設定で説明したように便利なエイリアスが追加されます。エイリアスの一覧は git モジュールの README.md を参照してください。
utility
utility モジュールは、ls コマンドのエイリアスやファイルをダウンロードする get コマンドなどを追加します。また、ls コマンドや grep コマンド、less コマンドの色を設定します。
safe-rm コマンドがインストールされている場合、rm コマンドは safe-rm コマンドへのエイリアスになります。下記のコマンドで safe-rm コマンドをインストールしておきましょう。
brew install safe-rm
プロンプト
Zsh のプロンプトに関連するモジュールです。テーマが依存するモジュールになり、これらのモジュールを直接設定することはないので解説しません。
ディストロ
ディストリビューションに関連するモジュールです。現時点では homebrew モジュールと pacman モジュールだけなので、それぞれ macOS と Arch Linux を対象にしたものと考えていいかと思います。
homebrew
homebrew モジュールは、Homebrew のエイリアスを追加します。brew コマンドのエイリアスと cask コマンドのエイリアスが追加されます。エイリアスの一覧は homebrew モジュールの README.md を参照してください。
Zsh コミュニティ (zsh-users)
Zsh コミュニティが開発しているモジュールです。zsh-autosuggestions モジュールと zsh-completions モジュール、zsh-history-substring-search モジュール、zsh-syntax-highlighting モジュールについて解説します。
zsh-autosuggestions
zsh-autosuggestions モジュールは、高速かつ控えめにコマンドをサジェストします。
サジェストされたコマンドはグレーの文字色で表示されます。Right キーや End キー、Control + F、Control + E を押下するとサジェストされたコマンドを確定できます。Esc + F を押下すると単語ごとにサジェストされたコマンドを確定できます。
標準のサジェスト戦略では、サジェスト候補は直近のヒストリから検索されます。サジェスト候補に補完も含める場合、ZSH_AUTOSUGGEST_STRATEGY を (history completion) に設定することで実現できます。
なお、ZSH_AUTOSUGGEST_MANUAL_REBIND を有効にしている場合、すべてのモジュールより後に読み込むように指定されています。
設定の詳細は、zsh-autosuggestions モジュールの README.md を参照してください。
zsh-completions
zsh-completions モジュールは、補完定義を追加します。
補完定義の一覧は zsh-completions モジュールの src ディレクトリ を参照してください。様々なコマンドの補完定義を追加してくれるので、とりあえず読み込ませておいて損はないと思います。
なお、.zimrc ファイルにおいて zmodule コマンドで読み込むときは fpath オプションで src ディレクトリを指定します。
zsh-history-substring-search
zsh-history-substring-search モジュールは、入力中のコマンドでヒストリを検索します。
キーバインドの設定で指定したキー、一般的には Up キーや Control + P を押下することで検索が開始されます。Control + R を押下することで開始されるヒストリ検索を利用している場合、このモジュールが提供する検索機能を利用する機会はあまりないかもしれません。
なお、後述する zsh-syntax-highlighting モジュールより後に読み込むように指定されています。
zsh-syntax-highlighting
zsh-syntax-highlighting モジュールは、入力中のコマンドへのシンタックスハイライトを提供します。
コマンドの存在をシンタックスハイライトで示してくれるのが便利なので、とりあえず読み込ませておいて損はないと思います。
なお、 completion モジュールより後に読み込むように指定されています。
暫定版の .zimrc ファイル
Zim フレームワークが用意しているモジュールを中心に選定し、暫定的に下記のような .zimrc ファイルを作成しました。
zmodule archive
zmodule environment
zmodule fzf
zmodule git
zmodule homebrew
zmodule input
zmodule utility
zmodule exa # sourced after utility
zmodule zsh-users/zsh-completions --fpath src
zmodule completion # sourced after all modules that add completion definitions
zmodule zsh-users/zsh-syntax-highlighting # sourced after completion
zmodule zsh-users/zsh-history-substring-search # sourced after zsh-syntax-highlighting
zmodule zsh-users/zsh-autosuggestions # sourced last
次節では、テーマの設定について説明していきます。
テーマを設定する
Zim フレームワークはいくつかのテーマを提供しています。テーマもモジュールと同じように .zimrc フィルで設定します。その中でも設定が複雑な eriner テーマについて説明していきます。
eriner テーマは、Vim の Powerline プラグインに影響を受けた agnoster テーマの派生版です。このテーマで特徴的なプロンプトの矢印は、Powerline 用の特別なグリフ(字形)で表現されています。一般的なフォントに Powerline 用の特別なグリフを追加したフォントは Powerline フォントと総称されます。
まずは Powerline フォントとして SF Mono フォントに Powerline 用の特別なグリフを追加した SF Mono for Powerline フォントを Homebrew でインストールします。
brew tap homebrew/cask-fonts
brew install font-sf-mono-for-powerline
macOS 標準のターミナルは SF Mono フォントが設定されているので SF Mono for Powerline フォントを推奨します。これ以外のフォントにしたい場合は、cask-fonts タップを追加した上で、brew search –cask powerline で検索してみてください。
フォントをインストールしたら、ターミナルのプロファイルからフォントを SF Mono Powerline フォントに設定します。
eriner テーマを使用する準備ができたので、.zimrc ファイルに下記の設定を追加します。ほとんどのテーマは、プロンプトに関連するモジュールが必要になります。eriner テーマの必要条件にあるように git-info モジュールも読み込むように設定します。これ以外のテーマにしたい場合も各テーマの必要要件を確認し、必要なモジュールを合わせて読み込むように設定してください。
zmodule eriner
zmodule git-info
最終版の .zshrc ファイルと .zimrc ファイル
最終版の .zshrc ファイルは下記のようになります。本稿では説明していませんが、先頭に Homebrew のコマンド補完設定を追加しています。
fpath+=$(brew --prefix)/share/zsh/site-functions
WORDCHARS=${WORDCHARS//[\/]}
zstyle ':zim:input' double-dot-expand yes
[[ ~/.zimrc -nt ~/.zim/init.zsh ]] && source ~/.zim/zimfw.zsh init -q
source ~/.fzf.zsh
source ~/.zim/init.zsh
bindkey $terminfo[kcuu1] history-substring-search-up
bindkey $terminfo[kcud1] history-substring-search-down
bindkey -M emacs '^P' history-substring-search-up
bindkey -M emacs '^N' history-substring-search-down
そして、最終版の .zimrc ファイルは下記のようになります。
zmodule archive
zmodule environment
zmodule eriner
zmodule fzf
zmodule git
zmodule git-info
zmodule homebrew
zmodule input
zmodule utility
zmodule exa # sourced after utility
zmodule zsh-users/zsh-completions --fpath src
zmodule completion # sourced after all modules that add completion definitions
zmodule zsh-users/zsh-syntax-highlighting # sourced after completion
zmodule zsh-users/zsh-history-substring-search # sourced after zsh-syntax-highlighting
zmodule zsh-users/zsh-autosuggestions # sourced last
なお、上記の設定を適切に動作させるために、いくつかのコマンド実行とターミナルのフォント設定をしてきました。コマンド実行について、まとめたものを下記に掲載しておきます。
curl -fsSL https://raw.githubusercontent.com/zimfw/install/master/install.zsh | zsh
brew install bat exa fd fzf safe-rm
$(brew --prefix)/opt/fzf/install --key-bindings --completion --update-rc --no-bash --no-fish
brew tap homebrew/cask-fonts
brew install font-sf-mono-for-powerline
本稿では、Zim フレームワークを用いて Zsh 環境を構築する方法について説明しました。Zim フレームワークの日本語情報はまだ少ないようなので、Zim フレームワークを試してみる方の参考になれば幸いです。