O comando :put
insere o conteúdo do registro (ou, como caso especial que você está usando aqui, o resultado da avaliação de uma expressão, aqui: uma string estática) literalmente no buffer. Não pode ser usado para reproduzir comandos.
Como seus comandos são normais e inserem mapeamentos de modo, você pode usar :normal!
para executá-los. Um mapeamento de chaves os levaria diretamente para o lado direito; como o trabalho :command
s personalizado no modo Ex, você precisa de :normal
como tradutor do Ex para o modo normal.
:command! Hcom normal! 0i<!-- ^[A -->^[
O ^[
incorporado deve ser caracteres de escape literais; Eu recomendaria escrevê-los no :help key-notation
; você então precisa de aspas duplas e :execute
para interpretar a string:
:command! Hcom execute "normal! 0i<!-- \<Esc>A -->\<Esc>"
Antes de investir muito mais energia em ajustes nesse comando, observe que há vários plug-ins de comentários que fazem isso muito bem, e eles são genéricos (e geralmente extensíveis) para que funcionem em qualquer tipo de arquivo: