Вім, 22 , 18 натискань клавіш
O <esc>J:h r<cr>lyEZZ<C-v>{@"
Величезна заслуга @Udioica за те, що я придумав дивовижну відповідь, яку я продовжив . Ця відповідь не містить жодних зірочок, сподіваючись виграти виграш.
Пояснення:
Введення вводиться перед рештою програми. Udioica придумала цей дивовижний трюк. Введення тексту <n>O <esc>створить піраміду пробілів та один порожній рядок, доки ви це :set autoindentввімкнули. Цей параметр увімкнено за замовчуванням у vim 8 та neovim, хоча не у старих версіях vim. Оскільки це також створює додатковий рядок, ми використовуємо Jдля приєднання цього рядка до наступного, який фактично просто видаляє рядок під нами.
Тепер на цьому етапі нам потрібно замінити всі ці пробіли зірочками. Якби я не переймався використанням зірочок у своєму коді, я б просто візуально вибрав всю справу <C-v>{та тип r*, який замінює кожен символ виділення зірочкою. Але я не можу цього зробити.
Тож ми відкриваємо довідкові сторінки для :h r. Цікавим є те, що у вікні вікно ця сторінка відображається як:
r
r{char} Replace the character under the cursor with {char}.
...
За допомогою курсору на першому 'r'. Однак сам файл фактично містить цей текст:
*r*
r{char} Replace the character under the cursor with {char}.
...
Досить зручно. Таким чином, ми переходимо на один символ за допомогою lта (витягуємо текст r*з yE([y] ank до [E] й цього слова).
Щоб закрити цей буфер, ми використовуємо ярлик для збереження файлу ZZ. Тепер ми візуально вибираємо наші пробіли і запускаємо витягнутий текст так, ніби ми його набрали @". Це працює, тому що "@" запускає наступний реєстр як натискання клавіш vim, і "є регістром за замовчуванням для yanking.