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