Teclas Vim, 22 , 18
O <esc>J:h r<cr>lyEZZ<C-v>{@"
Crédito enorme para @Udioica por ter encontrado uma resposta impressionante do vim que eu expandi. Esta resposta não contém nenhum asterisco, na esperança de ganhar a recompensa.
Explicação:
A entrada é digitada antes do restante do programa. Udioica veio com esse truque incrível. A digitação <n>O <esc>criará uma pirâmide de espaços e uma linha vazia, desde que você tenha :set autoindentativado. Esta opção é ativada por padrão no vim 8 e no neovim, embora não nas versões mais antigas do vim. Como isso também cria uma linha extra, usamosJ para associá-la à próxima, o que efetivamente remove a linha abaixo de nós.
Agora, neste ponto, precisamos substituir todos esses espaços por asteriscos. Se eu não estivesse preocupado com o uso de asteriscos no meu código, selecionaria visualmente tudo <C-v>{e digitariar* , que substituem cada caractere da seleção por um asterisco. Mas eu não posso fazer isso.
Então, abrimos as páginas de ajuda para :h r. O interessante sobre isso é que, na janela do vim, esta página é exibida como:
r
r{char} Replace the character under the cursor with {char}.
...
Com o cursor no primeiro 'r'. No entanto, o próprio arquivo realmente contém este texto:
*r*
r{char} Replace the character under the cursor with {char}.
...
Bastante conveniente. Então, passamos um caractere com l, e puxamos o texto r*com yE([y] ank para o [E] e esta palavra).
Para fechar esse buffer, usamos o atalho para salvar um arquivo ZZ. Agora, selecionamos visualmente nossos espaços e executamos o texto arrancado como se o tivéssemos digitado @". Isso funciona porque "@" executa o seguinte registro como pressionamentos de tecla vim e "é o registro padrão para puxar.