答案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