Vim, 22 , 18 frappes
O <esc>J:h r<cr>lyEZZ<C-v>{@"
Un grand crédit à @Udioica pour avoir fourni une réponse géniale sur vim que j'ai développée. Cette réponse ne contient aucun astérisque, dans l’espoir de gagner la prime.
Explication:
La saisie est tapée avant le reste du programme. Udioica a inventé ce truc génial. Taper <n>O <esc>
créera une pyramide d’espaces et une ligne vide, tant que vous avez :set autoindent
activé. Cette option est activée par défaut dans vim 8 et neovim, mais pas les anciennes versions de vim. Comme cela crée également une ligne supplémentaire, nous avons l'habitude J
de joindre cette ligne à la suivante, ce qui supprime simplement la ligne située en dessous de nous.
Maintenant, à ce stade, nous devons remplacer tous ces espaces par des astérisques. Si je ne craignais pas d'utiliser des astérisques dans mon code, je sélectionnerais simplement le tout <C-v>{
et le type r*
, ce qui remplace chaque caractère de la sélection par un astérisque. Mais je ne peux pas faire ça.
Nous ouvrons donc les pages d’aide à :h r
. La chose intéressante à propos de cela est que dans la fenêtre de vim, cette page est affichée comme:
r
r{char} Replace the character under the cursor with {char}.
...
Avec le curseur sur le premier 'r'. Cependant, le fichier lui-même contient ce texte:
*r*
r{char} Replace the character under the cursor with {char}.
...
Assez pratique. Donc, nous passons au-dessus d'un caractère avec l
, et tirons le texte r*
avec yE
([y] à la [E] nd de ce mot).
Pour fermer ce tampon, nous utilisons le raccourci pour enregistrer un fichier ZZ
. Maintenant, nous sélectionnons visuellement nos espaces et lançons le texte tiré comme si nous l'avions dactylographié @"
. Cela fonctionne parce que "@" exécute le registre suivant sous forme de frappes vim, et "est le registre par défaut pour yanking.