Подтвердить что ты не робот

Выбор текста внутри скобок за пределами скобки в Vim

Я знаю, что я могу выбрать текст внутри кавычек /doublequotes, выпустив vi' или vi". Например, с курсором в H, я могу выбрать World, выпустив vi"

Hello "World"

Но это не работает, если у меня

Hello (World)

Если мой курсор находится в H, и я пытаюсь выбрать World с помощью vi), он не работает. Кажется, единственный способ сделать это - на самом деле переместить курсор внутри скобки и выдать vi). Почему выбор текста внутри) и "отличаются таким образом?

4b9b3361

Ответ 1

Разница между командами текстового объекта {a, i} × {(, ), b} и их ", ', ` в основном проистекают из различных определений блок и строку с кавычками (см. :help v_ab, :help v_aquote).

В то время как последний является текстом предыдущего символа кавычки текущего линии до следующего на той же линии (сбежавших в сторону), первая - текст между n-й предыдущей непревзойденной открывающей скобкой и ее сопоставив завершение один. Проще говоря, команда va( (без счета) подобна [(v% - если перед курсором нет несогласованной скобки, оба выбирают ничего. Однако команда va" проверяет текущую строку, чтобы найти подходящую пара котировок в любом случае.

Основная причина этой разницы в поведении, я полагаю, заключается в том, что цитируется строки, в отличие от скобок, считаются не вложенными (по крайней мере, в перспектива встроенных текстовых объектов Vim).

Чтобы выбрать текст в следующей скобке в текущей строке, можно использовать

%vi(

или

%va(

чтобы включить скобки в выделение.

Ответ 2

Этот комментарий к Hacker News указывает на script, предположительно решая проблему.

Неплохо, но это Стив Лош, так что это может быть хорошо.