Я рефакторинг некоторого кода, и у меня есть несколько вхождений одного и того же блока кода. Я хочу захватить блок (возможно, в визуальном режиме), а затем заменить каждое его вхождение на вызов метода, который я только что определил.

Что-то вроде.

Some block
of code
that I
want to refactor

Some block
of code
that I
want to refactor

Some block
of code
that I
want to refactor

Some block
of code
that I
want to refactor

становится ...

method_call(stuff)

method_call(stuff)

method_call(stuff)

method_call(stuff)

1 ответ1

1

Есть несколько способов сделать это, в зависимости от того, как часто вы планируете это делать. Следующий метод довольно прост в том смысле, что он использует обычные команды Vim, но может быть утомительным, если вам пришлось много это делать.

Сначала вставьте блок кода, который вы хотите преобразовать в регистр по умолчанию. Например, переместите курсор на первую строку блока, введите V , переместите курсор на последнюю строку блока и введите Y Теперь скопируйте регистр по умолчанию в регистр поиска, заменив символы новой строки на \n .

:let @/ = substitute(@", '\n', '\\n', 'g')

Наконец, замените все блоки вызовами метода.

:%s//method_call(stuff)/

Всё ещё ищете ответ? Посмотрите другие вопросы с метками .