As explained in
help :normal, if an argument to
:normal is not a complete normal-mode command, it will be aborted as if
Ctrl-C was typed. "This implies that an insert command [such as
o] must be completed (to start Insert mode, see
TT command is effectively executing
o<esc>i, which is not the same as just typing
o--it removes the indent.
To do what you want to do, try the following.
execute "normal o\<Space>\<BS>\<Esc>"
That opens a new line with the cursor at the indented position, inserts a space and backspaces over the space to preserve the indent, then escapes back to normal mode. The
:startinsert! command then puts you in insert mode after the indent.