Вім, 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.