はじめに
ここ数年、fishを好んで使っています。zshのように色々設定しなくても、デフォルトで良い感じに設定されているところが良いです。
fishを使うOSは、各種Linux、macOS、最近だとWSL1/2など、色々な環境があると思いますが、シェルを使っていると、自分がどの環境にいるのかふと見失うことがあります(私だけ?)。sshなどリモートログインしていると尚更。
自分の場所を示すuser@hostname
のようなプロンプトもよく使われますが、文字列だと認識に時間がかかるので、できるだけ無意識に自分の環境を認識できるように各種OS風にプロンプトを切り替えるプラグインを作りました。
使い方
パッケージ管理ツールのfisherを使います。
$ fisher install eholic/osflavor
インストール後は、(__osflavor)
をfish_prompt.fish
に書くだけです。
function fish_prompt
# エラーステータスをプロンプト に反映させたい場合
set -g __osflavor_last_status $status # 関数の先頭に書くこと
# いろんな設定
echo -n -s (__osflavor) (__fish_git_prompt " %s") ' '
end
高度な設定
osflavor
の各OSごとのプロンプトは、fishのグローバル変数__osflavor_dist_<name>
で定義されており、<name>
がuname -a
に含まれているかどうかで、プロンプト切り替えています。デフォルト定義を変更したい場合や、osflavor
未定義のOSのプロンプトを設定したい場合は、config.fish
に__osflavor_dist_<name>
を定義することで自由に設定できます。
詳細は、eholic/osflavorを見てください。
おわりに
初めてfishのプラグインを作りましたが、fishの関数やパッケージ管理ツールが良くできていて、思ったより気軽にコーディングできました。もっとfishユーザやプラグインが増えてきて、開発が活発になると良いなと思います。