当我添加更多 set_color 时,我的鱼提示变得混乱

当我添加更多 set_color 时,我的鱼提示变得混乱

我一直在尝试制作自定义鱼提示,但有一个问题我似乎不知道如何解决。

我让它工作了,但这并不完全是我想要的,因为我希望它ash@cat-box是绿色的 工作鱼提示

这是我试图使其完全符合我想要的效果的一个,但其中很多事情都搞砸了,我不明白为什么或如何解决它。 鱼提示不工作

我将不胜感激任何帮助我的提示工作并解释为什么它这样做的原因。

答案1

问题%s在于缺少格式说明符printf%s告诉 printf 将参数替换为字符串。如果您添加更多字符串(在本例中是对 的新调用set_color),它将不知道将它们放在哪里,因此它们只会添加到末尾。

直接修复是添加更多%s说明符:

printf '%s%s@%s%s:%s%s%s$' (set_color green) $USER $hostname (set_color normal) \
                           (set_color blue) (prompt_pwd) (set_color normal)

然而这变得有点笨拙;如果将它们分解为单独的命令可能会更清楚:

function fish_prompt
    set_color green
    printf '%s@%s' $USER $hostname
    set_color normal
    printf ':'
    set_color blue
    printf '%s' (prompt_pwd)
    set_color normal
    printf '$ '
end

相关内容