O argumento para -p
compreende a expansão rápida, por isso é apenas:
var=; vared -p '%B%F{red}something%f: ' var
-
%B
:bold
(%b
para parar em negrito) -
%F{red}
: primeiro plano vermelho (%K
para bacKground). -
%f
: restaurar cor de primeiro plano padrão.
Fazendo:
vared -p $'\e[1;31msomething: ' var
que seria equivalente a vared -p "$(printf '\e[1;31msomething: ')"
(corrigido da versão da sua pergunta) seria uma má idéia, já que enganaria o posicionamento do cursor de zle
, deixando-o pensar que o prompt tem 18 colunas de largura, enquanto na verdade tem apenas 11 colunas de largura, pois \e[1;31m
não é visível.