Прочитавши ваш коментар щодо випадку використання, схоже, ви можете використовувати відображення ключа замість макросу.
У мене є цей рядок у моєму .vimrc (не пам'ятаю, де я його знайшов):
nnoremap <Leader>s :%s/\<<C-r><C-w>\>//g<Left><Left>
Це має схожий ефект з описаним вами випадком використання, виводячи вас в командний рядок, тому єдине, що вам потрібно зробити, - це ввести заміну і натиснути клавішу enter, але в цьому випадку замінити всі зустрічі слова, яке було під вашим курсором .
Щоб просто замінити всередині поточного блоку, я думаю, що щось подібне повинно працювати:
nnoremap <Leader>s m'va{<ESC>``:'<,'>s/\<<C-r><C-w>\>//g<Left><Left>
Звичайно, ви можете зіставити його на будь-який ключ, який ви хочете.
Що згадане вище: позначте поточне положення за допомогою безіменного маркера, візуально виберіть поточний блок, залиште візуальний режим і поверніть курсор у збережене положення (маркери візуального вибору все ще встановлені), введіть командний режим і введіть команду заміщення , вставивши слово, яке було під курсором <C-r><C-w>
, та розташувавши курсор, щоб ввести заміну.