oh-my-zshのpluginやthemeを作ってみる

森裕介(プログラマー)
無念

さて、先の記事で oh-my-zshを紹介 しました。

今回はoh-my-zshを拡張するplugin, themeの作成方法を記します。

custom plugin

oh-my-zshには様々なpluginやthemeがあるのですが、 どうしても足りないpluginは自分で カスタムプラグイン を作る必要があります。 たとえば自分は cddtig を使っていますので、こちらのカスタムプラグインを作ってみましょう。

配置場所、命名ルール

プラグインは $ZSH/.oh-my-zsh/custom/plugins/[プラグイン名]/[プラグイン名].plugin.zsh に配置します。

pluginの配置が終わったら .zshrc に記述されている plugins=([プラグイン名]) を追加すればOKです。

cddプラグイン

さっそくcddのプラグインを作ってみましょう。 処理概要は

  • $ZSH/.oh-my-zsh/custom/plugins/cdd/cdd.plugin.zsh が読み込まれる
  • cdd.plugin.zshが同一ディレクトリに保存されているcddを読み込む
  • cddに必要な設定を行う

というものです。詳細は Gistに保存してある のでそちらをどうぞ。

tigプラグイン

こちらはtigの補完設定をただただ読みこむだけのpluginです。 例によって詳細は Gistをどうぞ

ほかにも

自分はいくつかのカスタムプラグインをgistに保存してあります。 本来であればoh-my-zsh本家へPull Requestを投げるべきだと思うのですが、今のところはこれでごまかしています。

インストール用のシェル もGistに保存しており、 環境を移行した際にはこれを実行しています。

custom theme

前回 steeef を設定しましたが、どうもGitブランチのステータスが ● で表示されるのはしっくりきません… なのでsteeefを元にカスタムテーマを作ってみましょう。

配置場所、命名ルール

$ZSH/.oh-my-zsh/custom/themes/[テーマ名]/[テーマ名].zsh-theme に配置します。

配置してみる

steeefをコピーして新しいテーマを作ります。名前は ste4f とでもしておきましょう。

#保存先をあらかじめ用意しておく
$ mkdir $ZSH_CUSTOM/themes
#steeeefをコピー
$ cp $ZSH/themes/steeef.zsh-theme $ZSH_CUSTOM/themes/ste4f.zsh-theme

続いてste4fを編集します。●が書いてある場所をよしなに編集しましょう。

編集した結果は以下のとおりです。

$ diff $ZSH_CUSTOM/themes/ste4f.zsh-theme $ZSH/themes/steeef.zsh-theme
54,55c54,55
< FMT_UNSTAGED="%{$orange%}U"
< FMT_STAGED="%{$limegreen%}M"
---
> FMT_UNSTAGED="%{$orange%}●"
> FMT_STAGED="%{$limegreen%}●"
86c86
< FMT_BRANCH="(%{$turquoise%}%b%u%c%{$hotpink%}M${PR_RST})"
---
> FMT_BRANCH="(%{$turquoise%}%b%u%c%{$hotpink%}●${PR_RST})"

編集が終わったら.zshrcのthemeを変更して設定を再読み込みしましょう。

このように表示が変更されました。

custom theme

おわり

まったくの0からzshの設定を変更することは大変ですが、 oh-my-zshはたくさんのplugin, themeが用意されているので、 大変参考になります。他のプラグイン、テーマを参考にしつつ 自分用の設定をしていきましょう。