It's a bit of a mess, but you can pretend the %m is a parameter and use parameter expansion to strip the zoltan from the host name:
PROMPT="...${${(%):-%m}#1} ..."
A little explanation. First, you create a "parameter" expansion that doesn't actually have a parameter name; it just uses the text you provide as the "value":
${:-%m}
Next, add the % expansion flag so that any prompt escapes found in the value are processed.
${(%):-%m}
Finally, next it in a final expansion that uses the # operator to remove a prefix from the string:
${${(%):-%m}#zoltan-}
You can tame your prompt a bit by building up piece by piece (and use zsh's prompt escapes to handle the color changes, rather than embedding terminal control sequences explicitly).
PROMPT="%F{magenta}%n%f" # Magenta user name PROMPT+="@" PROMPT+="%F{blue}${${(%):-%m}#zoltan-}%f" # Blue host name, minus zoltan PROMPT+=" " PROMPT+="%F{yellow}%1~ %f" # Yellow working directory PROMPT+=" %# "
%mis "The hostname up to the first '.'" An alternative might be to define another variable with the value you want, and reference that instead of%m...