Объектный выбор Vim с помощью осведомленных о синтаксисе текстовых объектов

Я просто узнал о действительно потрясающих объектно-избранных возможностях энергии. С курсором в некотором "текстовом объекте" ряд простых глаголов может выбрать или воздействовать на целый объект. Например, с курсором где угодно в кавычках ниже (например, по 'o'):

print "Hello, world"
           ^

Команда vi" выберет целую фразу в кавычках. Та же возможность работает со многими "текстовыми объектами", которые энергия определяет, включая слова, предложения, абзацы и символы, включенные кавычками, круглыми скобками и фигурными скобками.

Но теперь я хочу, чтобы это понятие "текстового объекта" знало о языке, который я пишу. Например, рассмотрите следующий Python:

re.sub("[^A-Z ]", " ", string)

Я хотел бы смочь установить курсор где-нибудь на это и выбрать все это. Вызов функции является четко определенной синтаксической конструкцией, но это не "слово", "предложение", "абзац", или включенный в кавычки или фигурные скобки.

Есть ли какие-либо плагины или взломы vimrc там, которые определяют эти виды языковозависимых "текстовых объектов"?

5
задан Community 23 May 2017 в 12:25
поделиться

2 ответа

Хотя можно построить карты, которые будут выбирать всю область синтаксиса, это не подойдет для вашего сценария, поскольку в нем нет области синтаксиса "вызов функции".

Один из вариантов - выбрать скобочное выражение, а затем расширить его назад, чтобы включить вызов функции.

va)oB
  • va) выбирает родительское выражение
  • o переключает, на каком конце визуального выделения находится курсор и в каком направлении вы расширяетесь.
  • B перемещает курсор на одно СЛОВО назад. То есть к символу, который находится сразу после пробела перед курсором.
3
ответ дан 14 December 2019 в 04:29
поделиться

Существует плагин для создания определяемых пользователем текстовых объектов. У него нет большого рейтинга, но попробовать стоит.

1
ответ дан 14 December 2019 в 04:29
поделиться
Другие вопросы по тегам:

Похожие вопросы: