Есть ли способ скопировать текст в круглых скобках в Vim?

Я хочу скопировать параметры foo(bar).baz в следующий код:

function(foo(bar).baz)

Первая попытка: курсор в одной из круглых скобок, затем y%. Это дает мне параметры плюс немного больше:

(foo(bar).baz)

Вторая попытка: Курсор при открытии круглых скобок. Установите отметку ma, перейдите к концу с помощью   %, затем y`a, чтобы скопировать обратно в метку. Это дает мне:

(foo(bar).baz

Установка знака в конце, а другой путь дает мне то же самое. Установка отметьте на f, тогда набрав mah%y`a, я дам мне foo(bar).baz, который я хочу, но, возможно, там что-то более сжатое. Есть?

Ответы

Ответ 1

Используйте текстовые объекты:

yi( (или ya(, если вы хотите включить скобки).

Вы также можете использовать " для работы внутри кавычек и т.д. Подробнее см. ссылку или введите :help text-objects в Vim.

Ответ 2

Несколько меньшая альтернатива yi( равна yib. Точно так же yib эквивалентно yi{ - занимает содержимое внутри фигурных скобок.

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

Подробнее о добротности текстового объекта см. :help text-objects.

Ответ 3

Следующее должно сделать это

Янки внутреннего блока

yi(