Учитывая, что файл python повторяется бесконечно:
def myFunction(a, b, c):
if a:
print b
elif c:
print 'hello'
Я хотел бы перемещаться и редактировать этот файл, используя знакомые движки vim. Например, используя (,), [[,]], {,} или удаляя/yanking/изменяя текст с помощью команд типа di}.
В других языках (например, на С++, Java, С# и т.д.) у вас есть фигурные скобки, поэтому с помощью движения типа di} можно легко найти подходящую фигуру и действовать на этом блоке. И на самом деле, если я нахожусь на символе "b" в приведенном выше тексте и делаю di) в vim, он успешно удаляет текст между двумя паранами.
Проблема в обнаружении блоков кода на Python, я думаю. Используя (,), [[,]], {, или}, как движения все в значительной степени делают то же самое, доводя вас до начала (выше или по линии def) или заканчивая (после последней строки функции) функция. И, насколько я знаю, нет никакого способа легко сказать vim "выбрать все для этого блока отступов". В приведенном выше примере я хотел бы быть включен в "i" строки if, type di} и удалить его весь блок if (до конца этой конкретной функции).
Я уверен, что должно быть возможно сказать, что vim будет работать с отступом для таких движений (ну, может быть, не это конкретное движение, а какое-то определенное пользователем действие). Любые мысли о том, как это сделать?