Разница между {a
, i
} × {(
, )
, b
} командами текстового объекта и их "
, '
, `
аналогами в основном обусловленаразличные определения блока и строки в кавычках (см. :help v_ab
, :help v_aquote
).
В то время как последний является текстом из предыдущего символа кавычки наот текущей строки до следующей в той же строке (исключая их в стороне), первая строка - это текст между n-й предыдущей несопоставленной открывающей скобкой и соответствующей ей закрывающей скобкой.Проще говоря, команда va(
(без счетчика) похожа на [(v%
- если перед курсором нет непрописанных скобок, оба ничего не выбирают.Однако команда va"
сканирует текущую строку, чтобы найти совпадающую пару кавычек.
Основная причина такого различия в поведении, я полагаю, заключается в том, что строки в кавычках, в отличие от скобок, предполагаютсябыть не вложенным (по крайней мере, с точки зрения встроенных текстовых объектов Vim).
Чтобы выделить текст в следующей скобке в текущей строке, можно использовать
%vi(
или
%va(
для включения скобок в выборку.