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 autoindent
ativado. 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.