LoginSignup
5
2

More than 3 years have passed since last update.

fish shell のプラグインの作り方

Last updated at Posted at 2017-07-18

fish shell は、oh-my-fishfisher で簡単にプラグインをインストールすることができます。

この記事では、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 のファイルを書き、プルリクエストを送ります。

例として、僕が送ったプルリクエストを挙げておきます。

最後に

こんな感じで、特に難しくはないと思いますので、自作のプラグインを公開してみてください。

5
2
2

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
5
2