Consider an expression of type
f[a,b]+a+b
and a set of replacement rules
sub={a->1,b->2}
If I evaluate now the expression
f[a,b]+a+b/.sub
the output will be
3+f[1,2]
However, I need that the arguments of f are left unevaluated after the replacement rules are applied. In particular, I need my output to be
3+f[a,b]
I tried with HoldAllComplete and similars as attributes to f, but this seems not to work