Особенно в ситуации ОП, где у вас действительно есть только два переменных фрагмента контента, я считаю, что самым простым методом является бастардизация @ mkomitee * подход выше .
Вместо того, чтобы вручную сохранять два «параметра» в регистрах перед каждым использованием макроса, я предпочитаю набирать «первый параметр», визуально выбрать его, оценить макрос, а затем ввести «второй параметр». Для достижения затем я запускаю макрос с помощью команды удаления (простой d , при условии, что вы всегда будете вызывать макрос, например, в визуальном режиме); затем завершите его командой, которая переключается в режим вставки (например, c или i ), и, наконец, находясь в режиме вставки, a Ctrl-O q , чтобы макрос также оставлял Vim в режиме вставки после завершения.
В качестве слегка простого примера, если два «параметра» являются отдельными словами, здесь приведены нажатия клавиш для создания (а затем вызова) макроса для манипулирования widget.snog()
параметризованным widgetFoo.fooSnog(bar)
:
foo b qq "zdw - мы сейчас записываем в регистр q
с первым аргументом ' в z
‸
"aP - префикс-вставка из фиксированного регистра, используемого в другом месте документа
widget.snog()‸
* * ^ тысячу пятьдесят-два * ** 1 054 тысяча пятьдесят-три * е * ** 1056 тысяча пятьдесят пять * a␣ * 1 057 * Ctrl-R Esc * +1061 ** +1062 * б ~ hx - вставьте первый аргумент и используйте
widget‸Foo.snog()
2w ~ b "zP - использовать существующее слово с заглавной буквы, затем снова вставить первый аргумент
widgetFoo.fo‸oSnog()
$ Ctrl-O q - перейти в последнюю позицию, войти в режим вставки и завершить макрос
widgetFoo.fooSnog(‸)
После завершения первого экземпляра с bar
мы можем использовать его несколько раз:
o баз Esc b - установить наш первый аргумент,
widgetFoo.fooSnog(bar)
‸baz
@ q quux Esc - вызвать макрос и завершить работу со вторым
widgetFoo.fooSnog(bar)
widgetBaz.bazSnog(quux‸)
o corge Esc b @@ grault Esc - повторить a третий раз
widgetFoo.fooSnog(bar)
widgetBaz.bazSnog(quux)
widgetCorge.corgeSnog(grault‸)
o garply Esc b @@ waldo Esc - … и и так далее
widgetFoo.fooSnog(bar)
widgetBaz.bazSnog(quux)
widgetCorge.corgeSnog(grault)
widgetGarply.garplySnog(waldo‸)
Конечно, это выглядит кропотливо, набрано так долго, но на практике это удивительно мало нажатий клавиш и очень легко тренируется в пальцах.
tl; dr : введите первый аргумент; введите макро-запись до , удалив ее в регистр; манипулировать вашим текстом по желанию; затем оставьте vim в режиме вставки в позиции второго аргумента с Ctrl-O q .