Vim, 22 , 18 Tastenanschläge
O <esc>J:h r<cr>lyEZZ<C-v>{@"
Vielen Dank an @Udioica für die fantastische Antwort, die ich erweitert habe. Diese Antwort enthält keine Sternchen, in der Hoffnung, das Kopfgeld zu gewinnen.
Erläuterung:
Die Eingabe wird vor dem Rest des Programms eingegeben. Udioica hat sich diesen tollen Trick ausgedacht. Wenn Sie tippen, <n>O <esc>
wird eine Pyramide von Leerzeichen und eine leere Zeile erstellt, sofern Sie dies :set autoindent
aktiviert haben. Diese Option ist in vim 8 und neovim standardmäßig aktiviert, jedoch nicht in älteren Versionen von vim. Da hierdurch auch eine zusätzliche Zeile erstellt wird, verbinden wir J
diese Zeile mit der nächsten, wodurch die unter uns liegende Zeile entfernt wird.
Jetzt müssen wir alle diese Leerzeichen durch Sternchen ersetzen. Wenn ich mir keine Sorgen um die Verwendung von Sternchen in meinem Code machen würde, würde ich einfach das Ganze <C-v>{
und den Typ visuell auswählen r*
, wodurch jedes Zeichen der Auswahl durch ein Sternchen ersetzt wird. Das kann ich aber nicht.
Also öffnen wir die Hilfeseiten zu :h r
. Das Interessante daran ist, dass diese Seite im vim-Fenster angezeigt wird als:
r
r{char} Replace the character under the cursor with {char}.
...
Mit dem Cursor auf das erste 'r'. Die Datei selbst enthält jedoch tatsächlich den folgenden Text:
*r*
r{char} Replace the character under the cursor with {char}.
...
Ziemlich praktisch. Also bewegen wir uns mit über ein Zeichen l
und ziehen den Text r*
mit yE
([y] ank an das [E] nd dieses Wortes).
Um diesen Puffer zu schließen, verwenden wir die Verknüpfung, um eine Datei zu speichern ZZ
. Jetzt wählen wir visuell unsere Leerzeichen aus und führen den gezerrten Text so aus, als hätten wir ihn eingegeben @"
. Dies funktioniert, weil "@" das folgende Register als vim-keystrokes ausführt und "das Standardregister für das Ziehen ist.