やりたいこと
zshをやめて、fishを使い始めました。
zshを使っていたときに、下のような形でカレントディレクトリの右側にgitのブランチとstatusを出す設定をしていました。
便利に使っていたので、fishでも同じような感じにしたいと思いました。
また、fishのプロンプトはデフォルトでかわいいのがあるので、それを使いつつgitのブランチとstatusを右側に出すようにしたいと思いました。
ブラウザからプロンプトを設定する
$ fish_config
ブラウザが起動してぽちぽち設定できるので、好きなものを選びます。
わたしはこれにしました(水色が好き)。
gitのブランチとstatusを表示する
fishの基本設定ファイルは~/.config/fish/config.fish
です。
上記ファイルに書き込んでも設定は反映されますが、プロンプトの設定は関数に分けて~/.config/fish/functions/fish_prompt.fish
に書くことが推奨されています。
fish_config
コマンドを打ってブラウザからプロンプトを設定すると、以下のようなファイルが生成されて内容が書き込まれています。
function fish_prompt
test $SSH_TTY
and printf (set_color red)$USER(set_color brwhite)'@'(set_color yellow)(prompt_hostname)' '
test $USER = 'root'
and echo (set_color red)"#"
# Main
echo -n (set_color cyan)(prompt_pwd) (set_color red)'❯'(set_color yellow)'❯'(set_color green)'❯ '
end
この二つのファイルを使って、gitのブランチとstatusの設定を追記してみます。
ちょっと古い記事ですが記号を使ったかわいい設定を公開してくださっている方がいたので、使うことにします。
Git Information in Fish Shell’s Prompt
# Fish git prompt
set __fish_git_prompt_showdirtystate 'yes'
set __fish_git_prompt_showstashstate 'yes'
set __fish_git_prompt_showuntrackedfiles 'yes'
set __fish_git_prompt_showupstream 'yes'
set __fish_git_prompt_color_branch yellow
set __fish_git_prompt_color_upstream_ahead green
set __fish_git_prompt_color_upstream_behind red
# Status Chars
set __fish_git_prompt_char_dirtystate '⚡'
set __fish_git_prompt_char_stagedstate '→'
set __fish_git_prompt_char_untrackedfiles '☡'
set __fish_git_prompt_char_stashstate '↩'
set __fish_git_prompt_char_upstream_ahead '+'
set __fish_git_prompt_char_upstream_behind '-'
function fish_prompt
test $SSH_TTY
and printf (set_color red)$USER(set_color brwhite)'@'(set_color yellow)(prompt_hostname)' '
test $USER = 'root'
and echo (set_color red)"#"
# Main
echo -n (set_color cyan)(prompt_pwd) (set_color red)'❯'(set_color yellow)'❯'(set_color green)'❯ '
# Git
set last_status $status
printf '%s ' (__fish_git_prompt)
set_color normal
end
これを保存して適用させると、以下のような表示になります。
他にもステータスに応じてわかりやすくてかわいい記号が出るので、便利に使っています。