Я просто узнал о действительно потрясающих объектно-избранных возможностях энергии. С курсором в некотором "текстовом объекте" ряд простых глаголов может выбрать или воздействовать на целый объект. Например, с курсором где угодно в кавычках ниже (например, по 'o'):
print "Hello, world"
^
Команда vi"
выберет целую фразу в кавычках. Та же возможность работает со многими "текстовыми объектами", которые энергия определяет, включая слова, предложения, абзацы и символы, включенные кавычками, круглыми скобками и фигурными скобками.
Но теперь я хочу, чтобы это понятие "текстового объекта" знало о языке, который я пишу. Например, рассмотрите следующий Python:
re.sub("[^A-Z ]", " ", string)
Я хотел бы смочь установить курсор где-нибудь на это и выбрать все это. Вызов функции является четко определенной синтаксической конструкцией, но это не "слово", "предложение", "абзац", или включенный в кавычки или фигурные скобки.
Есть ли какие-либо плагины или взломы vimrc там, которые определяют эти виды языковозависимых "текстовых объектов"?
Хотя можно построить карты, которые будут выбирать всю область синтаксиса, это не подойдет для вашего сценария, поскольку в нем нет области синтаксиса "вызов функции".
Один из вариантов - выбрать скобочное выражение, а затем расширить его назад, чтобы включить вызов функции.
va)oB
va)
выбирает родительское выражениеo
переключает, на каком конце визуального выделения находится курсор и в каком направлении вы расширяетесь. B
перемещает курсор на одно СЛОВО назад. То есть к символу, который находится сразу после пробела перед курсором. Существует плагин для создания определяемых пользователем текстовых объектов. У него нет большого рейтинга, но попробовать стоит.