Zshの設定フレームワークZimを使ってZshを管理する
2024-01-24
2024-02-03
今回はZshの設定フレームワークであるZimの導入について記事を書きました。
Zimとは
Zimはプラグインマネージャ、プロンプトテーマ、モジュール群を包括的に備えたzshの設定フレームワークです。スピードを重視していて他のzsh設定フレームワークに比べて迅速に動作すると主張しています。(*1)。zshの設定は.zshrc
ファイルに設定を書きますが、煩雑になるため、近年は便利な設定ツールが増えています。Zimと同様のツールとしてはoh-my-zshやprezotなどがあります。
筆者は現在Zimを利用してzshのプラグイン管理を行っています。ネット上では前述のPrezotが人気のようで記事がたくさん出てくるのですが、Zimもとても使いやすいので記事を書いてみました。
(*1): 公式Githb参照
インストール前の準備
- gitの導入
- zshをデフォルトのシェルに設定
1については必須ではありませんが、今回はgitは導入済みである前提で進めます。もしgitがない環境化でZimを使用する場合には以下を~/.zshrcに追記します。
zstyle ':zim:zmodule' use 'degit'
2については大前提なのですが、もしデフォルトのシェルがzsh
ではない場合はchsh
コマンドで変更しておいてください。
Zimfwの自動インストール
Zimfwを自動で簡単に導入するためのすクリプトが用意されているので、特にこだわりがなければこのスクリプトを実行すれば良いです。多くの場合はこの自動インストールがベストな選択となると思います。
自動インストールのコマンド
curl -fsSL https://raw.githubusercontent.com/zimfw/install/master/install.zsh | zsh
自動インストールのすクリプト実行によって.zshrc
にZim用の設定が追加され、新たに.zimrc
ファイルが生成されました。ではターミナルを再起動してZimの初期化を行いましょう。これでZimが有効になるはずです。
自動インストールするとデフォルトでいくつかのモジュールが自動でインストールされ、.zsh
ファイルに各モジュールの設定が書き込まれます。これらの挙動が好みでなく、手動でインストールしたいという方は後述の手動インストールをして下さい。
自動インストール時に.zimrc
ファイルに書き込まれるモジュールのリストは以下です。
- zmodule environment
- zmodule git
- zmodule input
- zmodule termtitle
- zmodule utility
- zmodule duration-info
- zmodule git-info
- zmodule asciiship
- zmodule zsh-users/zsh-completions —fpath src
- zmodule completion
- zmodule zsh-users/zsh-syntax-highlighting
- zmodule zsh-users/zsh-history-substring-search
- zmodule zsh-users/zsh-autosuggestions
Zimfwの手動インストール
手動インストールは自動インストールに比べて面倒ですが、.zshrc
を自動で書き込まれることなくユーザーが自己の責任において管理できます。また、初期でインストールするモジュールもユーザーが必要なもののみを選択することができるメリットがあります。
(注意): 自動インストールを行った場合は以下の操作は不要です。
~/.zshrcファイルへの設定
~/.zshrc
ファイルにZim用の以下の設定を追記します。ZIM_HOME
に関してはユーザーが書き込み可能な場所であれば任意の場所に設定できます。今回は~/
以下に設定します。
~/.zshrc設定例
# ZIM_HOMEはユーザーが書き込み可能な任意の場所が可
ZIM_HOME=${ZDOTDIR:-${HOME}}/.zim
# プラグインマネージャーがない場合は自動でダウンロードする設定
# この設定はオプションだが、書かない場合は手動でZIM_HOME/以下にzimfw.zshを導入する
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
# 未導入モジュールのインストールとinit.zshの更新
# この設定はオプションだが書かない場合は確実に.zimrcを更新後に ~/.zim/zimfw.zsh install を実行する
# 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
# 各モジュールの初期化
source ${ZIM_HOME}/init.zsh
今回はZIM_HOME=~/.zim
として話を進めます。
zimfw.zshの導入
もし、上記で~/.zshrc
にプラグインマネージャーの自動ダウンロード処理を書かなかった場合は以下のコマンドでインストールして下さい。
mkdir ~/.zim
cd ~/.zim
wget https://github.com/zimfw/zimfw/releases/latest/download/zimfw.zsh
.zimrcファイルの準備
以下の内容の.zimrc
ファイルを用意します。ここには導入したいモジュールをzmodule
に続いて書きます。基本的な書き方は以下のようにzmoduleに続けてURLやモジュール名を書きます。多くの場合、各モジュールの公式サイトにZim用の書き方があるので、それらを参考にして追記します。
以下に代表的なzmodule
の書き方の例を示しますが、多くのケースがあるため、完全なzmoduleの書き方はgithub:zimfwの使い方を参照下さい。
- @zimfw作成のモジュール :
zmodule asciiship
- 他のgithub上のモジュール :
zmodule StackExchange/blackbox
- 任意のURL:
zmodule https://gitlab.com/Spriithy/basher.git
- ローカル内の絶対パス:
zmodule /usr/local/share/zsh-autosuggestions
- カスタム初期ファイルが複数ある場合:
zmodule sindresorhus/pure --source async.zsh --source pure.zsh
- 初期コマンドが必要な場合:
zmodule skywind3000/z.lua --cmd 'eval "$(lua {}/z.lua --init zsh enhanced once)"'
- 巨大なgitの場合:
zmodule romkatv/powerlevel10k --use degit
今回はプロンプトテーマ、補完機能、及び必要最低限のモジュールを導入してみます。
~/.zimrc
# プロンプトテーマ
zmodule bira
# 補完
zmodule zsh-users/zsh-completions --fpath src
zmodule completion
# 最低限必要なモジュール
zmodule zsh-users/zsh-syntax-highlighting
zmodule zsh-users/zsh-autosuggestions
zimfwの初期化
もし~/.zim/zimfw.zsh
を手動で導入済みの場合は以下のコマンドを実行します。
source ~/.zim/zimfw.zsh install
source ~/.zim/init.zsh
もし、zimfw.zshを自動インストールすることを選択肢た場合はターミナルを閉じて再起動した際に自動でモジュールのインストールと初期化が行われます。プラグインマネージャ(zimfw.zsh)が自動でインストールされて初期化処理が自動で始まります。
Zimにおけるモジュールの管理
モジュールのインストール
基本的には.zimrc
ファイルにzmodule
を使用してモジュール名を追加して以下コマンドを実行します。
zimfw install
その後追加したモジュールに関する設定を~/.zshrc
に加筆します。
モジュールの削除
モジュールが不要になった場合は.zimrc
からモジュールを削除して以下コマンドを実行します。
zimfw uninstall
その後削除したモジュールに関する設定を~/.zshrc
から削除します。
Zimのアンインストール
もしZimが不要になり他の設定フレームワークに移行したくなった場合にもきれいに消せるので安心してください。以下の手順で消すことができます。
- .zshrcからzimfwの設定箇所を削除
- ~/.zimディレクトリを削除
- ~/.zimrcファイルを削除
まとめ
今回はZshの設定フレームワークであるZimの紹介と導入方法を見てきました。Zimは多くの便利なモジュール群とプラグインマネージャーで構成された迅速に動作する魅力があります。この記事をみて少しでも興味を持ってくださる方がいれば幸いです。