Fish prompt com rvm e git info

Comecei a usar peixes hoje e estou adorando. Demorou um pouco para transferir minha configuração de prompt do zsh, mas finalmente consegui descobrir:

Cenário

coloque isso em seu ~ / .config / fish / fish.config

function _git_branch_name
echo
(git symbolic-ref HEAD ^/dev/null | sed -e 's|^refs/heads/||')
end

function _is_git_dirty
echo
(git status -s --ignore-submodules=dirty ^/dev/null)
end

function _unpushed
echo
(git cherry -v "@{upstream}" ^/dev/null)
end

function rvm_prompt
set -l yellow (set_color -o yellow)
if [ (which rvm) ]
set -l identifier (rvm tools identifier)
echo
"$yellow$identifier "
else
echo
""
end
end

function fish_prompt
set -l cyan (set_color cyan)
set -l yellow (set_color yellow)
set -l red (set_color -o red)
set -l blue (set_color blue)
set -l magenta (set_color -o magenta)
set -l normal (set_color normal)

set -l arrow "$red➜"
set -l cwd $cyan(basename (prompt_pwd))

if [ (_git_branch_name) ]
set -l git_branch $red(_git_branch_name)
set git_info "$blue git:($git_branch$blue)"

set -l with_unpushed (_git_branch_name)

if [ (_is_git_dirty) ]
set arrow "$red✗"
end

if [ (_unpushed) ]
set git_info "$git_info$normal with$magenta unpushed"
end
end

echo
-e \n
echo
-n -s (rvm_prompt) $cwd $git_info
echo
-e \n$arrow $normal
end

Acontece que a sintaxe fish é muito melhor do que bash. Vale a pena o esforço para migrar.