You could also use InputAliases. For example:
CurrentValue[EvaluationNotebook[], InputAliases] = {
"fr" -> FrameBox[
"\[SelectionPlaceholder]",
BaselinePosition->Baseline,
Background->LightGray
],
ParentList
};
Here is a short animation using the alias:
Addendum
The nice thing about this approach compared to the accepted answer is that the added frame is transparent to the evaluation process. Here's an animation comparing the two approaches:
Explanation
One further comment. The difference between the two cases is that the evaluate in place approach used Framed
, which by default has the option StripOnInput->False
. Using:
10 == Framed[Defer[11-1], StripOnInput->True]
would produce a wrapper that is transparent to evaluation