fish shell は、oh-my-fish や fisher で簡単にプラグインをインストールすることができます。
この記事では、fish shell のプラグインの作り方を説明します。
プラグインの種類
プラグインには以下の2種類があります。
- テーマ
- プラグイン
要するに、テーマとそれ以外の機能拡張とは分けて考えるということです。
テーマの作り方
ファイル構成
もし oh-my-fish の環境があれば、以下のコマンドでテーマを新規作成できます(参考 : https://github.com/oh-my-fish/oh-my-fish/blob/master/docs/en-US/Packages.md )。
$ omf new theme my_theme
create fish_greeting.fish
create fish_prompt.fish
create fish_right_prompt.fish
create fish_title.fish
create LICENSE
create README.md
oh-my-fish の環境がなければ、これらのファイルを手作業で作っても問題ありません。また、これらのファイルが全て必要というわけでもありません。例えば fish_prompt.fish
だけでも良いです。
fish_prompt.fish
の中身は以下のようになります。
function fish_prompt
# Customize fish prompt
end
作ったテーマの試行
fisher の場合は、作成したテーマのディレクトリ内で以下のようにすれば適用できます。
$ fisher add .
oh-my-fish の場合は、作成したテーマのディレクトリを ~/.local/share/omf/themes/
内に置き、以下のコマンドで適用できます。
$ omf theme <テーマ名>
テーマ以外のプラグインの作り方
もし oh-my-fish の環境があれば、以下のコマンドでプラグインを新規作成できます。
$ omf new pkg my_pkg
create completions/my_pkg.fish
create functions/my_pkg.fish
create init.fish
create LICENSE
create README.md
create uninstall.fish
oh-my-fish の環境がなければ、これらのファイルを手作業で作っても問題ありません。また、これらのファイルが全て必要というわけでもありません。例えば functions/my_pkg.fish
だけでも良いです。
functions/my_pkg.fish
の中身は以下のようになります。
function my_pkg -d "My package"
# Package entry-point
end
作ったプラグインの試行
fisherman の場合は、作成したテーマのディレクトリ内で以下のようにすれば適用できます。
$ fisher add .
oh-my-fish の場合は、作成したテーマのディレクトリを ~/.local/share/omf/pkg/
内に置き、fish を起動すれば適用できます。
作ったプラグインの配布
各プラグインごとに専用リポジトリをひとつ作って、GitHub などで公開しましょう。
例として、僕が作ったプラグインを挙げておきます。
fisher で使えるようにするだけなら、単に公開するだけで終わりです。
oh-my-fish で使えるようにする場合は、oh-my-fish/packages-main リポジトリの説明にしたがって packages のファイルを書き、プルリクエストを送ります。
例として、僕が送ったプルリクエストを挙げておきます。
- テーマ : https://github.com/oh-my-fish/packages-main/pull/11
- プラグイン : https://github.com/oh-my-fish/packages-main/pull/12
最後に
こんな感じで、特に難しくはないと思いますので、自作のプラグインを公開してみてください。