VIM: заменить все вхождения слова в текущей функции C / C ++ - PullRequest
3 голосов
/ 16 февраля 2011

Я должен заменить все вхождения определенного макроса внутри некоторых (только некоторые из десятков) C-функций.Поскольку файл имеет длину в тысячи строк, с несколькими экземплярами макроса во всех функциях, я бы хотел заменить все вхождения в конкретной функции, в которой находится курсор в данный момент.Я знаю, что VIM предоставляет команды навигации (например, [[чтобы перейти к началу текущей функции, а затем%, чтобы найти соответствующую закрывающую скобку), но я не могу понять, как их использовать, чтобы найти требуемыйзаменить команду.Кто-нибудь может помочь?

Ответы [ 2 ]

12 голосов
/ 16 февраля 2011

Поместите курсор на первую открывающую скобку. Затем введите v%, и вы увидите, что тело функции будет выделено. Затем введите команду замены :s/find/replace/g и нажмите ввод. Это заменит в выбранной функции.

Примечание. Вы увидите изменение командной строки на: :'<,'>:s/find/replace/g.

2 голосов
/ 16 февраля 2011

Хотя я бы также порекомендовал решение Dogbane, я подумал также упомянуть плагин NrrwRgn .Это весьма полезно для работы с непрерывным подмножеством буфера.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...