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

Как выбрать блок кода Python с помощью Vim?

Я могу использовать vi{ и va{ для выбора блоков кода С++. Это помогает мне много, когда мне нужно выдернуть/удалить их.

Но Python использует отступы для указания блоков кода. Я не могу найти лучшего способа. Любые идеи?

4b9b3361

Ответ 1

У меня не было большого количества возможностей использовать его еще, но Michael Smiths vim-indent-object звучит так, будто он может быть близок к что вы хотите.

Пример использования (номера строк, показанные с помощью set number active):

  1 This is
  2   some text
  3     with multiple
  4   levels of
  5   indentation.
  6 There is also
  7     another stanza.

С помощью курсора на строке 2, 4 или 5 введите Vii, чтобы выбрать строки с 2 по 5.
С помощью курсора в строке 3 введите Vai, чтобы выбрать строки с 2 по 3.
С помощью курсора в строке 3 введите Vaiii (или Viiii), чтобы выбрать строки с 2 по 5 (в визуальном режиме несколько применений объектов отступа расширяют выделение до следующего уровня вверх/вниз).

Текстовыми объектами, которые он определяет, являются:

  • ai: текущий уровень отступов плюс строка выше
    полезно, когда вы хотите захватить вводную строку (например, захватите if и его "затем" блок)
  • ii: текущий уровень отступов
  • ai: текущий уровень отступов плюс одна строка выше и одна строка ниже
    полезно для языков, использующих "конечные" операторы: if/endif).
  • ii: текущий уровень отступа (фактически, ii и ii совпадают)

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

Ответ 2

Я просто нажал v для визуального режима, затем ( или ). Это приведет вас к следующей пустой строке. Это должно соответствовать вашим блокам кода, если вы хорошо форматируете.

Ответ 3

Вы можете показать строки (: set nu), а затем перейти к строке, где начинается блок кода (: lineNumber), и вытащить их.

Ответ 4

Для python обычно я использую "zM", чтобы свернуть весь файл, а затем "2yy", чтобы вырвать всю функцию.

Если ваша функция находится внутри некоторого класса, вы можете использовать "zc" вместо "zM"

Вам нужно добавить следующую строку в ~/.vimrc, чтобы заставить zM/zc работать:

autocmd FileType python set foldmethod=indent