Tasti Vim, 22 , 18
O <esc>J:h r<cr>lyEZZ<C-v>{@"
Enorme merito a @Udioica per aver trovato una fantastica risposta vim che ho ampliato. Questa risposta non contiene alcun asterisco, nella speranza di vincere la taglia.
Spiegazione:
L'input viene digitato prima del resto del programma. Udioica ha inventato questo fantastico trucco. La digitazione <n>O <esc>
creerà una piramide di spazi e una riga vuota, purché tu abbia :set autoindent
abilitato. Questa opzione è attiva di default in vim 8 e neovim, sebbene non nelle versioni precedenti di vim. Dal momento che questo crea anche una linea aggiuntiva, usiamo J
per unire questa linea con quella successiva, che effettivamente rimuove la linea sotto di noi.
Ora a questo punto, dobbiamo sostituire tutti questi spazi con asterischi. Se non fossi preoccupato di usare gli asterischi nel mio codice, selezionerei visivamente l'intera cosa <C-v>{
e il tipo r*
, che sostituisce ogni carattere della selezione con un asterisco. Ma non posso farlo.
Quindi apriamo le pagine di aiuto per :h r
. La cosa interessante di questo è che nella finestra di vim, questa pagina viene visualizzata come:
r
r{char} Replace the character under the cursor with {char}.
...
Con il cursore sulla prima 'r'. Tuttavia, il file stesso contiene effettivamente questo testo:
*r*
r{char} Replace the character under the cursor with {char}.
...
Abbastanza conveniente. Quindi spostiamo su un carattere con l
e strappiamo il testo r*
con yE
([y] ank alla [E] nd di questa parola).
Per chiudere questo buffer, utilizziamo il collegamento per salvare un file ZZ
. Ora, selezioniamo visivamente i nostri spazi ed eseguiamo il testo strappato come se lo avessimo digitato facendo @"
. Questo funziona perché "@" esegue il seguente registro come tasti di scelta rapida e "è il registro predefinito per lo strappo.